声明:本帖转载自ximo【脱壳教程12课:去除自校验方法】的视频教程,只是把视频变成了文档形式,仅供学习交流,觉得不错的请不要吝惜您的热心值。
去除自校验方法一、 自校验定义: 这些程序会检查自己有没有被修改,如果发现被修改的话,便会离开或进行其它动作。基本的校检方法包括 checksum, 检查大小, 检查跳转代码,等等。 对于我们而言,如果脱壳后的程序运行起来跟脱壳前的程序运行起来不一样,基本上就可以断定为程序增加了自校验机制。 二、 自校验示例: file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image002.jpg file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.jpg 三、如何去除自校验: 1. 先进行OD脱壳 注:脱壳完毕后停留在脱壳界面,不要把OD关闭 2. 再开启一个OD,打开脱壳后的程序 3. 两个程序同时下断点 bp CreateFileA然后分别点击运行(F9) 注:在win7环境下无法OD无法使用这个命令进行断点,只要Ctrl+G, 输入"kernel32.CreateFileA",我们就可以定位到kernel32的CreateFileA了 file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image006.jpg 4. 两个OD都点击【Alt+F9】执行到用户代码 5. 两边同时单步(F8)往下走,查看两个程序是否有不一样的跳转(比如一个实现了一个没实现) file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image008.jpg file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image010.jpg 6. 接下来我们要做的就是把脱壳后的文件的跳转让它不实现就可以了 ① 最简单的方法就是直接把脱壳后的程序那里的跳转给NOP掉 file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image012.jpg ②观察跳转的上一行汇编代码cmpeax,dword prt ss:[ebp-8],这是汇编代码,意思是eax和dwort进行比较,如果不相等就跳转,相等就不跳转,不懂可以百度,把它改成cmp eax,eax就可以了 file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image014.jpg ③或者把jnz改成je或jz也可以,具体的意思可以去百度一下 file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image016.jpg 7. 然后保存退出OD file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image018.jpg 8. 再次执行脱壳后的文件,OK,成功了 file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image020.jpg
可能图片不能正常显示,我也不知道为啥,知道的朋友可以说一下,在此附上整理好的文档连接,喜欢的朋友请热心值点赞 链接:http://pan.baidu.com/s/1o65qAaI 密码:58ai
|