Enigma Protector脱壳学习记录

来源:互联网 发布:c#修改浏览器数据 编辑:程序博客网 时间:2024/05/16 07:33

Enigma Protector脱壳学习记录

  • 空间

步聚:
1:由于ENG这个壳是由一个DLL来实现加壳,因此F2断点很容易被检测,所以下二次断点,
第一次下VirtualAlloc下断,断下后在401000处下硬件写入断点,断下,找到解码的地方,然后F2到这个写入函数的RETN处,执行,然后查DELPHI第一个CALL,发现有些CALL还没解码完毕,于是在代码段再下写入断点,然后
再到写入的地方,RETN处下F2或直接F4到RETN,然后观察CALL解密了,于是再找特征码:mov dword ptr ds:[edx+eax*4+4],ecx ,找到相应的地方就下硬件执行,NOP掉这个,然后取消硬件断点,在RETN处或下面的JNZ跳转F2下断,这里后再恢复源来的特征码语句,再下硬件执行,找到第一个CALL的地址,下硬件执行。
2:特征码断下的话,NOP掉,找到下面的RETN断下,恢复修改的语句,防止壳检测。重复上面操作几步后就断在第一个CALL里。
3:但观察返回地址,这里不是程序的地址,是一个较高地址,函数被移到高地址去了,于是,把这个地址里的CALL复制下来,用以写回到程序的空间里。
4:因为是DELPHI程序,因些可以用特征码:55 8B EC 33 C0 55 68 ?? ?? ?? 00 64 FF 30 64 89 20 33 C0 5A 59 59 64 89 10 68 ?? ?? ?? 00 C3 E9先找到这个,然后CTRL+L找到最后一个,然后再搜90 c8 44 00,这样就到了原OEP上面的一个DWORD,下面就是原OEP处
5:于是再把刚才复制的代码填到这里,新建EIP,然后DUMP,修复IAT,运行成功。

0 0
原创粉丝点击