exe手动进行脱壳详细步骤方法 exe软件脱壳教程( 三 )


exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
等到程序正常运行后,重新加载程序,再选择第二步,停在最后一次异常之前:
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
然后用Alt+M转到内存窗口,对主程序code段下内存断点,SHIFT+F9执行:
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
这样程序就中断在了正确的OEP处,可以选择从模块中删除分析以显示正常分析的汇编代码 。然后使用LoadPE dump程序,并修正程序映像大小 。但是在使用ImportREC v1.6F Fix版,输入正确的OEP,获取函数输入表信息时,会发现无效的指针 。使用方法一修复后,再使用方法三可以完全修复
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
再点击Fix dump,可以修复之前dump下来的程序,脱壳完成:
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
2、使用二次内存断点法:首先载入程序,将所有的异常类型忽略,然后在idata段设置内存断点, 然后SHIFT+F9:
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
停下来后再次在code段设置内存断点,再次SHIFT+F9执行,可以直接达到正确的OEP中:
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
然后LoadPE dump,然后修复IAT 。修复方法同方法1 。
3、寻找magic jump以及修复函数表完成后dump程序:前两步还是加内存断点(idata、code),然后定位到程序的正确OEP处
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
然后如果这时使用LoadPE dump后修复,就和前两种一样了 。这里先是使用ImportREC获取函数输入表第一个位置的指针地址 。
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
然后得到函数指针偏移地址在0x005512C,加上基地址后为0x045512C,这时在该位置下硬件访问双字断点 。再重新SHIFT+F9忽略异常执行后,由于下了断点,会触发tElock的CRC校验错误:
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
所以这里要先绕过CRC校验,才能成功执行到硬件断点位置,所以首先暂停程序,然后使用Alt+F9返回用户代码 。点击确定按钮后,程序暂停在调用ExitProcess的位置:
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
现在要向上找一找能跳过这个退出的跳转(CRC判断跳转),然后进行修改并跳过:
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
exe手动进行脱壳详细步骤方法 exe软件脱壳教程

文章插图
找到了应该修改的位置,但是如果修改之后重新运行是会被恢复的,所以先记下来这个跳转的地址,0x00469622 。重新运行之后,在idata断设置内存断点,SHIFT+F9停下后,再Ctrl+G找到修改点再修改 。修改完之后再设置之前的硬件断点,这样不会触发CRC校验错误了 。

推荐阅读