1.寻找OEP
1.1第一种情况
1.修改OD选项,调试设置"事件"为系统断点,直接打开"查看"->"内存",设置00400000下F2断点,单步F8找到0040****开头的OEP例如:00401528
1.2第二种情况
进入od后如果直接是
pushfd
pushad
F8走到pushad后右键,“查找”-》“命令序列” 对应快捷键为CTRL+S,搜索代码对应为
popad
popfd
找到对应点下F2断点,例如
重新运行进入后取消断点F8寻找0040开头的OEP,如:0040152
2.lordPE脱壳
使用lordPE进行完整脱壳生成unPack.exe,用ImportREConstructor输入表重建工具修改OEP为1528,自动查找IAT,获取输入表,修复转储文件(fix dump)unPack.exe
如果unpack依然报错可能需要进一步脱壳,打开lordPE,打开“PE编辑器”,选择加壳程序,“区段”,找最后一个区段的ROffset+RSize如下图,和为28400
用notepad++的Hex插件视图找到28400的一行,复制这一行到最后一行的所有数据
用notepad++的Hex插件视图打开unpack.exe,将复制的数据粘贴到最后并另存为unpack2.exe