文章插图
然后如果这时使用LoadPE dump后修复,就和前两种一样了 。这里先是使用ImportREC获取函数输入表第一个位置的指针地址 。
文章插图
然后得到函数指针偏移地址在0x005512C,加上基地址后为0x045512C,这时在该位置下硬件访问双字断点 。再重新SHIFT+F9忽略异常执行后,由于下了断点,会触发tElock的CRC校验错误:
文章插图
所以这里要先绕过CRC校验,才能成功执行到硬件断点位置,所以首先暂停程序,然后使用Alt+F9返回用户代码 。点击确定按钮后,程序暂停在调用ExitProcess的位置:
文章插图
现在要向上找一找能跳过这个退出的跳转(CRC判断跳转),然后进行修改并跳过:
文章插图
找到了应该修改的位置,但是如果修改之后重新运行是会被恢复的,所以先记下来这个跳转的地址,0x00469622 。重新运行之后,在idata断设置内存断点,SHIFT+F9停下后,再Ctrl+G找到修改点再修改 。修改完之后再设置之前的硬件断点,这样不会触发CRC校验错误了 。
无数次的SHIFT+F9之后,在寄存器窗口可以看到指针以及能够正常显示:
文章插图
然后此时F8单步,找magic jump……看小生大大的视屏是通过分析疑似CRC跳转得到magic jump的位置:
文章插图
这里记下来magic jump的地址是0x0046973B,然后清空udd文件,删除硬件断点,再次重新运行程序,然后在idata下内存断点停住,然后Ctrl+G找到magic jump位置处,修改跳转:
文章插图
然后在code段下内存断点:
文章插图
然后SHIFT+F9执行,停下来就到了OEP的位置:
文章插图
这时候再dump程序,IAT表已经被修复,可以直接获得脱壳版程序:
文章插图
这里尝试使用了另外两种脱壳方法,并且通过预先找OEP的方式,修复了CRC校验后,直接dump到了IAT被修复了的程序 。
3.3 PEncrypt脱壳笔记
文章插图
先把程序扔到OllyIce里面,然后程序停在这里,看起来蛮怪的:
文章插图
好吧,重新加载程序,尝试使用最后一次异常法,不忽略所有异常,然后使用异常计数器插件,程序停在最后一次异常处:
文章插图
如果此时F8单步下去,程序会触发异常处理,然后又到不了OEP了 。这时需要看一下堆栈数据情况:
文章插图
这时需要在0040CCD7处F2下断点,然后SHIFT+F9执行,可以跳过这个坑:
文章插图
然后接下来就是F8+F4的操作,一路直到OEP:
文章插图
用LoadPE脱壳,然后用ImportREC修复后,虽然没有无效指针,但是还是不能运行:
文章插图
这时候用LoadPE的重建PE功能:
文章插图
文章插图
然后就可以正常运行了:
文章插图
这个壳使用了单步跟踪的脱壳方法,一路跳过程序“陷阱”,最后达到OEP 。并且使用了LoadPE的重建PE功能,对程序进行了重建,最终完成了这个加密壳的脱壳全过程 。
- 如何在电视上安装电视软件 怎样给电视安装电视没有的软件
- 什么软件可以只录手机的声音 录制屏幕只录制手机内部声音的软件
- mac超实用的软件 好用的mac软件
- 哪个文字识别软件好 文字识别哪个软件好用还免费
- 不收费的聊天交友软件排行榜 聊天免费的交友软件app求推荐
- 2021十大u盘启动盘制作软件 启动盘制作工具哪个好
- 有什么听录音翻译的软件? 音频翻译软件
- 推荐免费好用的音频剪辑app 音频剪辑软件
- 软件购买火车票小技巧分享 怎么买火车票
- 电脑重装的最佳软件推荐 重装系统用什么软件好