前两天72pines又访问不正常,经过上次的折腾以为又得离开了,没想到今天又一切正常了,唉…
挺喜欢72pines的服务,可是说她是我用过的最好的BSP……
离开 OR 留下?
前两天72pines又访问不正常,经过上次的折腾以为又得离开了,没想到今天又一切正常了,唉…
挺喜欢72pines的服务,可是说她是我用过的最好的BSP……
离开 OR 留下?
这篇是我看到的讲esp定理的很好的一篇文章
链接:http://www.anqn.com/jiamijiemi/tuoke/2008-11-14/a09103753.shtml
一、ESP定律
EQ:何为ESP定律;为什么我们在脱壳的时候在程序载入OD后F8单步对寄存器ESP值地址下硬件断点后会来到壳跳向程序OEP的地方?
AS:ESP定律就是“堆栈平衡”原理也就是壳入栈和出栈的地址为对应
我们来看下面的图:
―――――――――――――――――――――――――――――――――――――――
程序载入OD时CPU主线程:

寄存器:

堆 栈:

当我们F8单步后的图:
CPU主线程:

寄存器:

此时的堆栈和寄存器的对比图:

―――――――――――――――――――――――――――――――――――――
通过此图大家可以看出壳在压栈也就是把寄存器的值全部压入堆栈,那么即然是“堆栈平衡”原理,在壳的出口也就是将要到达OEP时的值也应该是一样的,再看下图是程序将要到达OEP图:

和加壳程序载入OD的堆栈图比较一下大家就明白了:

除了EIP不同以外,eax保存当前OEP值,其他都样。 为什么会这样呢?我们来看看 A:PUSHAD

B:CALL

C:popad

D:JNZ

――――――――――――――――――――――――――――――――――――――
0040D000 A> 60 pushad //注意这里ESP=0012FFC4(壳入口)
0040D001 E8 00000000 call ASPACK.0040D006 //ESP=0012FFA4
PUSHAD就是把所有寄存器压栈!我们在到壳的最后看看:
0040D558 61 popad //ESP=0012FFA4(壳出栈口)
0040D559 75 08 jnz short ASPACK.0040D563 //注意这里ESP=0012FFC4
―――――――――――――――――――――――――――――――――――――――
现在大家可以看出什么来了吧……两两对应。
―――――――――――――――――――――――――――――――――――――――
也就是说当我们对ESP的0012FFA4下硬件访问断点之后。当程序要通过堆栈访问这些值 ,从而恢复原来寄存器的值,准备跳向OEP的时候,OD帮助我们中断下来。 我们可以把壳假设为一个子程序,当壳把代码解压前和解压后,他必须要做的是遵循堆栈平衡的原理。那怕就是有些壳偷代码抽取字节表面是不遵循堆栈平衡的原理实际上还是遵循的,也有的不把值放在ESP中而是放在了其它的地方,以防止ESP定律脱壳。
因为大家对ESP理解各有异同,但是,大同小异!一般理解可以为: 1、在命令行下断hr esp-4(此时的ESP就是OD载入后当前显示的值)
如果在载入OD后的pushad时的(ESP值-4)值,此例为(0012FFC4-4=0012FFC0)下断运行断下的地方刚好就是POPAD出栈。 2、hr ESP(关键标志下一行代码所指示的ESP值(F8单步通过))
3.是不是只能下断12FFA4的访问断点?
当然不是,那只是ESP定律的一个体现,我们运用的是ESP定律的原理,而不应该是他的具体数值,不能说12FFA4,或者12FFC0就是ESP定律,他们只是ESP定律的一个应用罢了!
―――――――――――――――――――――――――――――――――――――――
内存断点
―――――――――――――――――――――――――――――――――――――――
1.什么是内存断点?
2.如何在寻找OEP时使用内存断点。
3、内存断点寻找OEP的原理
A.首先,在OD中内存断点和普通断点(F2下断)是有本质区别的。
内存断点等效于命令bpm,他的中断要用到DR0-DR7的调试寄存器,也就是说OD通过这些DR0-DR7的调试寄存器来判断是否断下普通断点(F2下断)等效于bpx,他是在所执行的代码的当前地址的一个字节修改为CC(int3)。当程序运行到int3的时候就会产生一个异常,而这个异常将交给OD处理,把这个异常给EIP-1以后,就正好停在了需要的中断的地方(这个根据系统不同会不一样),同时OD在把上面的int3修改回原来的代码。
内存断点分为:内存访问断点,内存写入断点。
我们知道,在程序运行的时候会有3种基本的状态产生:读取–>写入–>执行。
004AE242 A1 00104000 mov eax,dword ptr ds:[004AE24C] //004AE24C处的内存读取
004AE247 A3 00104000 mov dword ptr ds:[004AE24C],eax //004AE24C处的内存写入
004AE24C 83C0 01 add eax,1 //004AE24C处的内存执行
1.当对004AE24C下内存访问断点的时候,可以中断在004AE242也可以中断在004AE247。
2.当对004AE24C下内存写入断点的时候,只能中断在004AE247。
3.当执行004AE24C的时候,只能中断在004AE24C
到这里你可能不明白了,为什么内存访问断点能中断在004AE247这一句对004AE24C的写入,而且还能中断在004AE24C的执行呢?其实很简单,我们只要仔细体会一下“内存访问”这四个字的含义遍可以知道,当我们对004AE24C进行读取的时候需要“访问”他吧,当我对004AE24C进行写入的时候也需要“访问”他吧!!当然我们要执行内存地址004AE24C的代码的时候也是还是要“访问”他的!
所以我们不难得出下面的结论:
1.内存写入中断的地方,一定是也可以用内存访问中断。
2.内存执行的地方,也可以用内存访问中断。
如果这时你认为,那么内存写入岂不是没用了。呵呵~那我要告诉你当然不是,如果你想快速的准确的定位到004AE247这一行的时候,那么他就大有作用了!
总结一下:内存断点不修改原代码,不会像普通断点那样因为修改代码被程序校验而导致中断失败;对于区段的访问只是区域大了一点,其原理和上面分析的三行代码是一样的。
B.如何使用内存断点来寻找OEP呢?
要回答这个问题首先要回答这一个问题:壳是如何解压代码的?
正如我们知道的,壳如果要把原来加密或压缩的代码运行起来就必须要解压和解密原来的代码。而这一个过程我们难道不能将他看做是对代码段(code段)的写入吗?好了,解压完毕了。我们要从壳代码的区段JMP到原来的代码段的时候,难道不正是对代码段(code段)的执行吗?
理清了上面的关系就好办了,那么如果载入OD后,我们直接对code段下内存访问断点的时候,一定会中断在壳对code段的写入的代码的上面,就像上面的004AE247的这一行。而如果当他把code段的代码全部解压解密完毕了以后,JMP到OEP的时候,我们是不是还可以停在OEP的代码上面呢?而且每按下F9都会中断,因为这时code段在执行中哦!
而如果你还要继续问我为什么一定要到那个地方才可以下断呢?我难道不可以一开始就下断吗?
正入我上面所说的,如果你在前面下断很可能壳对code段还没解压完毕呢,这时如果你不停的按F9,你将会看到OD的下方不断的在提示你,“对401000写入中断”“对401002写入中断”“对401004写入中断”…….如果你不介意按F9到他把正个code段写完的话,我除了同情你的“F9”以外,没什么其他的意见!
那么我们就没有别更快一点的办法了吗?
有的!那就是我们呼之欲出的两次内存断点办法。
怎么理解两次内存断点呢?
让我来做一个假设吧,假设我是一个壳的作者。一个EXE文件的有code段,data段,rsrc段…..依次排列在你的内存空间中,那么我会怎么解码呢?呵呵~我比较笨一点,我会先将code段解码,然后再将data段解压,接着是rsrc段……那么你不难发现,只要你在data断或者rsrc段下内存访问断点,那么中断的时候code段就已经解压完毕了。这时我们再对code段下内存访问断点,不就可以到达OEP了吗?
这里注意上面虽然下了两次内存访问断点,但是本质是不一样的,目的也是不一样的。
1.对data段下内存访问断点而中断是因为内存写入中断,目的是断在对对data段的解压时,这时壳要对data段写数据,但是code段已经解压 完毕。
2.对code段下内存访问断点而中断是因为内存执行中断,目的当然就是寻找OEP了。
总结一下:如果我们知道壳在什么地方对code段解压完毕我们就可以使用内存断点,找到OEP。如果不知道,那么我们就依靠2次内存断点去找,如果还不行就用多次内存断点。总之明白了原理在多次的内存断点其实都一样。从这个过程中我们了解的是壳在对区段解码的顺序!
______________________________________________________________________________________________
最简单快速的一个脚本搞定之
sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\)
或者用apt-get来卸载;
root@Ubuntu:~# dpkg –get-selections|grep linux
libselinux1 install
linux-firmware install
linux-headers-2.6.27-7 install
linux-headers-2.6.27-7-generic install
linux-headers-2.6.27-9 install
linux-headers-2.6.27-9-generic install
linux-headers-generic install
linux-image-2.6.27-9-generic install
linux-libc-dev install
linux-restricted-modules-2.6.27-7-generic deinstall
linux-restricted-modules-2.6.27-9-generic install
linux-restricted-modules-common install
linux-restricted-modules-generic install
linux-sound-base install
linuxfetion install
linuxqq install
syslinux install
util-linux install
含image就是内核。。。
apt-get remove linux-image-2.6.27-9-generic
然后会提示你确认是否删除
ps:可用 uname -r查看当前的内核
复制windows下的simsum.ttc到~/.wine/dosdevices/c:/windows/Fonts下
将一下代码导入注册表即可
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink]
“FontLinkControl”=dword:00004000
“FontLinkDefaultChar”=dword:00003000
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
“Lucida Sans Unicode”=hex(7):4d,53,47,4f,54,48,49,43,2e,54,54,43,00,4d,53,55,\
49,00,47,6f,74,68,69,63,00,00
“Microsoft Sans Serif”=hex(7):53,69,6d,53,75,6e,2e,54,54,43,00,53,69,6d,53,75,\
6e,00,00
“SimSun”=hex(7):67,75,6c,69,6d,2e,74,74,63,00,67,75,6c,69,6d,00,00
“Tahoma”=hex(7):53,69,6d,53,75,6e,2e,54,54,43,00,53,69,6d,53,75,6e,00,00
原文:http://www.pcpop.com/doc/0/331/331465.shtml
MPEG2编码确实已经濒临淘汰,但还是有一大批经典影片使用了MPEG2编码,所以这类影片的解码也不容忽视。
1. 解码模式选择完美解码内置的“影音播放用户HDTV(NVIDIA PureVIDEo)”,在此基础上进行修改;
2. “自动模式”应该默认就是开启的,完美解码将会根据片源自动选择合适的分离器和音频解码器,一般情况下都会正常工作。如果您有特殊需要或者出现解码不正常时,可以关闭自动模式,然后根据片源的封装格式手动选择分离器和音频解码器;
3. 视频渲染器建议选择“VMR9无渲染(修正黑位)”,可以在Aero界面下达到最佳效果;
4. 其它设置保持默认即可,只要确保MPEG2视频解码器为“CyberLink(DXVA)”,它就是从PowerDVD中提取的硬解码器;
《指环王3》实测:TS封装、MPEG2编码、1080p

输出:DXVA代表打开GPU硬件解码
(打开影片回放信息导致CPU占用率偏高,正常播放时只有10%)
N卡硬解MPEG2,CPU占用率10%左右
不进行任何操作,让影片正常播放一段时间后,可以发现CPU(2.6GHz的A64 X2 5000+)占用率稳定在10%左右。根据以往的经验来看,10%意味着显卡已经接管了视频解码的全部任务!当然音频解码、影音同步、挂字幕等任务还是由CPU来完成,因此CPU占用率不可能降为0。
完美解码N卡硬解VC-1设置:
VC-1的设置其实跟MPEG2是通用的(保持这种设置可以同时硬解VC-1和MPEG2),只要保证VC-1解码器正确就行
VC-1视频解码器必须选择Microsoft,它就是Windows Media Play自带的WMV9解码器,不要用CyberLink(DXVA)
选择Microsoft解码器后,点击右侧的配置按钮,在弹出的窗口中勾选WMV硬件加速,并选择开启,这样才能让硬件解码真正生效,切记切记!
《怪物史莱克3》实测:TS封装、VC-1编码、1080p
MCP78硬解VC-1,CPU占用率低于10%
不进行任何操作,让影片正常播放一段时间后,可以发现CPU(2.6GHz的A64 X2 5000+)占用率很稳定,始终没有超过10%。
MCP78内置的显卡GF8200/8300使用的是NVIDIA第三代视频解码器(VP3),对于VC-1编码能够做到完全硬解码,能够与A卡平起平坐。而NVIDIA的独立显卡则没有这个福气(还是VP2解码器),因此这里的测试结果不能代表全体N卡。
完美解码N卡硬解H.264设置:
硬解H.264只要设定好解码器(与VC-1&MPEG2不冲突),然后在先前VC-1&MPEG2设置的基础上更改一个选项即可:
视频渲染器必须改为“EVR增强型渲染(C/A)”,其他模式无法正常开启硬解
H.264视频解码器保证是“CyberLink(DXVA)”,这就是从PowerDVD 8.0当中提取出来的最新版H.264硬解码器,兼容性最好
不进行任何操作,让影片正常播放一段时间后,可以发现CPU(2.6GHz的A64 X2 5000+)占用率十分稳定,始终都没有超过10%,精确数值应该是在7%上下。
● X264篇
对于一些网速较慢或者硬盘空 间有限的用户来说,它们最常观赏的高清视频应该是720p而不是1080p,要知道前者的文件体积只有后者的1/5,再加上主流中端显示器(19/22) 无法点对点显示1920*1080的分辨率,导致1080p超高画质得不到充分体现,所以720p属于“性价比”很高的HDTV!
据笔者了解720p在国内所有HDTV中所占比例可达六成以上,而在720p视频当中有绝大多数都使用了X264编码——并非大家所熟知的H.264/VC-1/MPEG2,那么显卡能否支持这种已接近普及的高清视频呢?
● X264隶属于H.264编码,MKV封装支持硬解码
X264是采用H.264标准、在它基础上改进、具有更优秀算法、使之更适合于中低码率的视频压缩编码格式。X264是完全开源免费的,因此在网络视频传 播上非常流行,大多数720p视频都采用了X264编码,也有不少的低码率1080p采用了X264编码重新压制。

几乎所有的高清大片都有720p版本,并且清一色是X264编码MKV封装
绝大多数X264编码的视频都采用了MKV封装格式,因为MKV同样是开源免费的,而且可以内置字幕,内置的音轨也没有混合编码,很容易被分离器分离,即便文件出错也不会影响其它部分的正常播放。
也有一部分X264视频使用了传统的AVI封装,由于AVI将视频和音频重新打包混合编码,导致分离器无法识别,硬解码器无能为力,只能依靠CPU软解。实际上AVI封装的VC-1、H.264视频都无法硬解,好在这些视频数量极少,而且码率也不是很高。
对于MKV来说分离器不成问题,而X264也可以调用H.264的编码器,因此MKV封装的X264视频能够支持GPU硬件解码。
● 完美解码A/N卡硬解X264设置
硬解X264,A卡和N卡的设置是相同的,只要在原来硬解H.264设置的基础上,替换H.264视频解码器即可:
确保视频渲染器是“EVR增强型渲染(C/A)”,其他模式无法正常开启硬解
MKV分离器用默认或自动模式的Haali即可
将H.264视频编码器改为“CyberLink(DXVA)For MKV”,这是PowerDVD 7.3解码器修正版
● 《奥运开幕式NBC版》实测:MKV封装、X264编码、720p

自动调用PowerDVD 7.X解码器,输出DXVA代表开启硬解

字幕正常显示,CPU占用率5%都不到
仔细观察的话,720p的视频被放大至1080p的分辨率后,画质显然要差一大截,但如果是22寸以下的显示器(小于1680*1050分辨率),那么观看720p视频还是挺不错的,最重要的是它节省网络带宽和硬盘空间,而且一两张DVD就能刻录一部720p硬盘,保存起来相当方便。
槑,读音mei,古同“梅”。这个“槑”字由两个“呆”组成,于是在网络语言里被用来形容人很傻很天真。
囧,读音jiǒng,古同“冏”,原指光明。在网络文化中,它的内小“八”字视为眉眼,“口”视为嘴。它的内涵就是:作为头,表达沉重的思想;作为脸,表达浪漫与激情;也常常表示郁闷的表情。
兲:跟常用来骂人的那种水生动物没有关系,没你想的那么复杂。这个字是“天”字的古体,也念“天”(tiān)。
氼:哈哈,这个字其实好记,人掉水底下了,当然就是溺水,这个字就是“溺”的意思,读音也一样:溺(ni)。
砳:这个字有点不好理解,石头跟石头相碰怎么会是“乐”(le)的声音呢?但这个字就是形容石头相撞的一个象声词,就这么念。
嘦:意思很好懂吧?把“只要”两个字快速连读,你就会很容易找到它正确的读音:叫(jiao)。
嫑:同上,你可以猜出它念biao(标的二声),意思就不用说了吧。
嘂:四张嘴同时叫,当然就是大声叫了。还念叫(jiao)。
圐圙:仔细看看这两个字:两个口分别框住了四方八面,意为“围起来的草场”,念枯略(kū lue),内蒙古方言中一般读作库伦(kū luan),“圐圙”一词现多用作地名。
玊:玉的点儿点得不是地方,当然就是有瑕疵的玉,念“俗”(su)。
孖:第一次看到这个字是手机的“孖机”,意思如同字形所示:双生子。用现在话说就是克隆。念妈(mā)。
靐:bing 雷声。网络的另一种用法三个雷叠在一起,指太雷了,晴空霹雳雷,用法同雷,如,我今天被芙蓉姐姐再一次靐到了。
謽 jiang 言语倔强。
巭 bu(又音pu)意思是:勉学(韩国汉字)。巭确是在韩国造的汉字,但意思不是勉学。巭(bu)就是勉学。巭( pu)的意思是工作人员。在《功夫熊猫》上映之后“巭”成为了“有功夫的人”的简称。
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
当前用户:
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
IDE模式是将SATA硬盘映射成IDE模式,这样你用SATA硬盘装系统的时候就不需要装SATA硬盘驱动了
AHCI模式则与IDE模式相反,装系统时需要安装SATA驱动,而且貌似只有这个模式才能打开NCQ功能
RAID模式是要有两块硬盘才能实现的,具体情况可以参照一下网上组建RAID的文章,如果你只有一块硬盘就可以忽略它了
补充:NCQ是一种新的硬盘技术,简单来说开启它之后从一个程序跳到另一个程序时速度会更快,要实现它首先就要在BIOS里选择AHCI模式,然后在装系 统时安装相应的驱动(一般在主板驱动盘里有),安装好系统之后基本上就可以实现了(其实也快不到哪里去,我的硬盘已经打开NCQ了,但是也感觉不出多快)
================================================================================
AHCI的全称为“Serial ATA Advanced Host Controller Interface”,即“SATA高级主控接口”,是在英特尔的指导下,由多家公司联合研发的接口标准,其研发小组成员主要包括英特尔、AMD、戴尔、 Marvell、迈拓、微软、Red Hat、希捷和StorageGear等著名企业。AHCI描述了一种PCI类设备,主要是在系统内存和SATA设备之间扮演一种接口的角色,而且它在不 同的操作系统和硬件中是通用的。AHCI通过一个PCI BAR(基址寄存器)来实现原生SATA功能。由于AHCI统一接口的研发成功,使得支持SATA产品的开发工作大为简化,操作系统和设备制造商省去了单 独开发接口的工作,取而代之的是直接在统一接口上进行操作,可以实现包括NCQ(Native Command Queuing)在内的诸多功能。
一直以来SCSI硬盘在多任务负载下的表现能力为人称道,其根本的原因除了SCSI接口惊人的接口速率外,便是它的指令排序功能。以往的PATA、 SATA硬盘也正是因为缺少一种指令优化执行功能而在性能上落后于SCSI硬盘。针对这一困境,英特尔的AHCI规范引入了NCQ,它的应用能够大幅度减 少硬盘无用的寻道次数和数据查找时间,这样就能显著增强多任务情况下硬盘的性能。
HP筆記型電腦 - 啟用BIOS的SATA Native Mode後,會發生無法開機或藍底白字,該怎麼挽救呢?
http://h50178.www5.hp.com/support/F2112K/faqs/81585.html
http://itbbs.pconline.com.cn/bbs/topic.jsp?tid=7501094
http://mytechweblog.blogspot.com/2007/10/enabling-sata-native-mode-after-xp.html
笔记本电脑 SATA模式
http://hi.baidu.com/liuxingty/blog/item/7306eb45c3441623cefca3d2.html
XP,vista 更改为 SATA(AHCI) 模式
http://hi.baidu.com/ljdcn/blog/item/fc8cd2586d89c385800a182d.html
真假 SATA?BIOS缩水!笔记本硬盘接口模式大解析
http://q.yesky.com/group/review-9542770.html
step1: 打开注册表,打开方法:点击“开始\运行”,在“运行”对话框中输入命令:regedit
step2: 删除注册表中以下目录的items
(如果无法删除,需要修改权限:选中目录USBSTOR,点击菜单命令“安全\权限”,然后在弹出的权限对话框中选择“完全控制”选项)
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002(有的系统是003)\Enum\USBSTOR
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
step3:如果还有不完全的记录,则进一步处理:
打开注册表,打开方法:点“开始\运行”,在“运行”对话框中输入命令:regedit
然后在注册表中搜索所显示的不完全记录中的明显关键字,找到后将相应的记录删除
一般每条记录存在于以下两处地方:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses\
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\DeviceClasses\