32. 脱壳篇-简单带壳的程序、反调试带壳的程序(堆栈平衡原理找OEP、代码段设置断点)

版权声明:墨痕诉清风 https://blog.csdn.net/u012206617/article/details/88315847

第一个程序 

OEP为46B6F9 

PE头位置为46B000到46D000区间,have a nice day! 就是壳

一定要点上箭头指向处,dump改名

清除区段 ,删除壳,保存

第二个程序(市面上60%-80%)根据堆栈平衡原理寻找OEP

F8后到下图位置,但并不是OEP

因为地址与PE差别大,壳伪造了我们的text,rdata,data

开始寻找OEP

观察ESP值是否变化,如果发现变化我们就开始行动

第一次变化

右键

F9,停靠在硬件断点处,大部分jmp eax就是OEP,但是强壳不是

回到了程序的代码段

F8进入OEP

右键

删除壳

 

LordPE编辑,修改代码基址,数据基址保存

RebuildPE

第三个程序

应用堆栈平衡法找到OEP,这里的代码段、数据段、输入表和壳在同一个区间

所以必须要重建输入表

因为重建了输入表,所以Sections会多一行,就是重建输入表

删除ex_cod,这里的代码段、数据段、输入表和壳在同一个区间,在保存前最好有一个备份,删错了可以重新来过

RebuildPE,OK

第四个程序

MEW,免费的壳,压缩壳

一步到位

F8

第五个程序(代码段上断点法)

NoNamePacker壳

F9运行,此程序带有反调试系统

F8单步运行

或者查找IsDebuggerPresent,Alt+F9

je -> jmp

代码段设置断点

断点停下来了,注释也看到了401000的地址

但是这不是我们要的位置,所以我们返回M界面,继续代码段下断点F2,跳转后还不是就再继续下断点等待循环匹配成功

也可以选择”设置内存访问断点“,这样可以按F9循环,不用再打断点

ctrl+F8快速自动循环,查看循环再搞什么,F12暂停

循环后下断点,F9跳出循环,再在代码段下断点,F9,大量经验告诉我就样是最快的方法

Prt可以删除,注意要保留备份,要不然失败会很麻烦

猜你喜欢

转载自blog.csdn.net/u012206617/article/details/88315847