1.查壳,直接丢查壳工具就可以查看,进行重定位已分离(不知道的可以看我上一篇文章https://mp.csdn.net/mdeditor/100102533#)
2.用od打开,可以发现pushfd和pushad,f8单步执行两下,在右边选中esp,下硬件断点
3.f9执行到硬件断点,此时可以看到popfd和下面一个jmp,先f8一次
4.再f8一次,可以看到代码被od误解析成数据,此时,ctr+a,可以看到如下代码界面
5.回车进入这个call,发现其有很明显的四个call,这是主函数前的安全函数常调用的call
6.esc回到call之前,下面的jmp就是跳像oep,此时需要先把硬件断点取消掉,不然f8过不去,会先遇到硬件断点。(方法:od右上角有一栏,点击其中原点那个图标,就可以看到硬件断点了)
7.f8两次,调到oep
8.使用od自带的工具脱壳,右键—使用od脱壳调试教程—取消勾选重建输入表—随便取个名字保存—od别关
9.打开import reconstructor,附加一个活动进程—选中od正在调试的程序
10.将刚刚的地址复制到oep栏,按下图顺序操作
11.修正转储,选中od刚才dump出来的程序,打开,就可以生成脱壳后的程序
12.打开dump好的123_.exe,发现能运行,用查壳工具,壳不见了(因为工具原因,peid显示还有壳,die显示没有壳了)
13.逆向这种东西,就是要多学会几种工具,你不能保证哪个工具一定不会出错。好了,that’s all for nspack
来源:https://blog.csdn.net/weixin_45574485/article/details/100119459