文章插图
文章插图
等到程序正常运行后,重新加载程序,再选择第二步,停在最后一次异常之前:
文章插图
文章插图
然后用Alt+M转到内存窗口,对主程序code段下内存断点,SHIFT+F9执行:
文章插图
文章插图
这样程序就中断在了正确的OEP处,可以选择从模块中删除分析以显示正常分析的汇编代码 。然后使用LoadPE dump程序,并修正程序映像大小 。但是在使用ImportREC v1.6F Fix版,输入正确的OEP,获取函数输入表信息时,会发现无效的指针 。使用方法一修复后,再使用方法三可以完全修复
文章插图
文章插图
再点击Fix dump,可以修复之前dump下来的程序,脱壳完成:
文章插图
文章插图
2、使用二次内存断点法:首先载入程序,将所有的异常类型忽略,然后在idata段设置内存断点, 然后SHIFT+F9:
文章插图
文章插图
停下来后再次在code段设置内存断点,再次SHIFT+F9执行,可以直接达到正确的OEP中:
文章插图
文章插图
然后LoadPE dump,然后修复IAT 。修复方法同方法1 。
3、寻找magic jump以及修复函数表完成后dump程序:前两步还是加内存断点(idata、code),然后定位到程序的正确OEP处
文章插图
文章插图
然后如果这时使用LoadPE dump后修复,就和前两种一样了 。这里先是使用ImportREC获取函数输入表第一个位置的指针地址 。
文章插图
文章插图
然后得到函数指针偏移地址在0x005512C,加上基地址后为0x045512C,这时在该位置下硬件访问双字断点 。再重新SHIFT+F9忽略异常执行后,由于下了断点,会触发tElock的CRC校验错误:
文章插图
文章插图
所以这里要先绕过CRC校验,才能成功执行到硬件断点位置,所以首先暂停程序,然后使用Alt+F9返回用户代码 。点击确定按钮后,程序暂停在调用ExitProcess的位置:
文章插图
文章插图
现在要向上找一找能跳过这个退出的跳转(CRC判断跳转),然后进行修改并跳过:
文章插图
文章插图
找到了应该修改的位置,但是如果修改之后重新运行是会被恢复的,所以先记下来这个跳转的地址,0x00469622 。重新运行之后,在idata断设置内存断点,SHIFT+F9停下后,再Ctrl+G找到修改点再修改 。修改完之后再设置之前的硬件断点,这样不会触发CRC校验错误了 。
推荐阅读
- chrome如何进行安全设置 chrome安全性设置
- 电脑不能上网9个解决方法恢复 电脑wlan已关闭 需要手动但是打不开怎么办
- offer进行中是什么意思 公司发offer的意思
- lol怎样转区 LOL英雄联盟怎么进行转区
- 长安cs55plus手动挡是爱信变速箱吗 长安cs55plus手动变速箱是爱信的吗
- 圆舞曲波尔卡进行曲 波尔卡和圆舞曲的区别
- 如何对汽车进行保养 如何对汽车进行保养和维修
- 妄想山海 种植 妄想山海怎么进行种植
- 如何进行微信群群发消息提醒 如何进行微信群群发消息
- 怎么在哈喽单车上进行学生验证 哈喽单车学生认证在哪