手动脱壳简简单单.docx
《手动脱壳简简单单.docx》由会员分享,可在线阅读,更多相关《手动脱壳简简单单.docx(6页珍藏版)》请在三一办公上搜索。
1、手动脱壳简简单单手动脱壳简简单单 在我们进行逆向分析的时候,通常会遇到有些文件被加密处理过,也就是我们通常所说的被加了壳,这时他的内部结构都已经改变,我们想要继续分析是很麻烦的,所以我们需要把它从壳中分离出来,也就是我们常说的脱壳。现在越来越多的软件都使用了加壳的保护方法,所以脱壳是我们在逆向分析过程中很主要的步骤,掌握它至关重要 壳是最早出现的一种专业加密软件。不同的壳的侧重点也不同,有的侧重于压缩,有的侧重于加密,所以出现了压缩壳和加密壳。压缩壳的特点是减小软件的体积,我们常见的有:UPX,ASPack,PECompack等。加密壳的则侧重于加密,保护强度较大,常见的有:ASProtect
2、,Armadillo,Themida等。 第一步 寻找OEP OEP:程序的原入口点,就是壳程序在完成了对原程序的还原后,开始跳转到刚还原的程序执行,此时的地址就是入口点的值。 1 单步跟踪 首先,我们运行peid, 将我们要检测的程序拖到上面,可以看到它是用aspack加的壳,如图1。我们运行OD,点击菜单栏中的“文件”“打开”,把我们需要脱壳的文件加载进来,接着就会弹出一个对话框“模块你仍要继续分析吗”, 如图2,我们选择“否”,程序就会停以下的代码处: 01013001 90 nop 01013002 60 pushad 01013003 E8 03000000 call 0101300
3、B 01013008 - E9 EB045D45 jmp 465E34F8 0101300D 55 push ebp 0101300E C3 retn 0101300F E8 01000000 call 01013015 01013014 EB 5D jmp short 01013073 我们按F8来跟踪一下,当到了call 0101300B这里的时候,记事本自己打开了,我们按Ctrl+F2重新载入文件,再来跟踪,当我们再次遇到call 0101300B这一句的时候我们按F7跟进,代码会来到这里: 0101300B 5D pop ebp 0101300C 45 inc ebp 0101300D
4、 55 push ebp 0101300E C3 retn 我们继续F8来跟踪,当到了retn一句时,程序返回了,停在了 call的下面一句jmp 465E34F8上,跳转以后代码来到了下面的这一句call 01013015,继续F8,如果遇到程序往回跳,那么我们就在下一句代码处按F4,这样跟踪一段时间以后,我们会看到这样的代码: 010133BB 68 9D730001 push 0100739D 010133C0 C3 retn 再F8一下我们的程序就返回了了这里: 0100739D 6A 70 push 70 0100739F 68 98180001 push 01001898 0100
5、73A4 E8 BF010000 call 01007568 到这里,我们就已经到达OEP,单步跟踪法测试成功。 2 堆栈平衡 堆栈:一种数据项按序排列的数据结构,只能在一端(栈顶)对数据项进行插入和删除。 ESP:是CPU中的寄存器,它的值是指向堆栈栈顶的指针。 加壳时,必须保证加壳后文件与我们的原始文件的环境现场是不变的,所以在外壳程序运行的时候,就会把刚载入时的各寄存器值保存到堆栈中来保护环境现场,所以我们在它向堆栈保存环境现场时对这时的堆栈栈顶设置硬件访问断点,当壳程序执行完毕,恢复环境现场时就需要访问在保存环境现场时的堆栈地址,而我们已经在这里设置了硬件访问断点,所以程序就会被断下来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手动 脱壳 简简单单
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-3536638.html