点击下载:附件!
主要研究在xp下对这个小程序的手工脱壳,是asprotect1.2的壳。用od载入,停在:
00401000 > 68 01004500 PUSH ex1700.00450001
00401005 C3 RETN
因为我的问题不在这里,可在命令行里下g 4501B8,执行后再下g 3F004F,来到我能到达的倒数第二个seh陷阱处:
003F004F E8 3A000000 CALL 003F008E <====这个call跟进
003F0054 68 5D003F00 PUSH 3F005D
003F0059 FF0424 INC DWORD PTR [ESP]
003F005C C3 RETN
我看了以前的教程,大概意思就是遇到这样的call要跟进。这里下去也没什么问题,问题在最后一个seh陷阱,我把倒数第二个列出来是为了大哥们帮我看时可以方便一点,我能到的最后一个seh陷阱是:
003EFCAA E8 3A000000 CALL 003EFCE9 <====这个call跟进
003EFCAF 68 B8FC3E00 PUSH 3EFCB8
003EFCB4 FF0424 INC DWORD PTR [ESP]
003EFCB7 C3 RETN
这个call跟进后是:
003EFCE9 31C0 XOR EAX,EAX
003EFCEB EB 02 JMP SHORT 003EFCEF
接下来:
003EFCEF 64:FF30 PUSH DWORD PTR FS:[EAX]
003EFCF2 EB 01 JMP SHORT 003EFCF5
再下来:
003EFCF5 64:8920 MOV FS:[EAX],ESP
003EFCF8 3100 XOR [EAX],EAX 这一行会产生异常
003EFCFA EB 01 JMP SHORT 003EFCFD 直接把光标设到这儿,再按F4
再下来:
003EFCFD 64:8F05 0000000>POP DWORD PTR FS:[0] ; 0012FE60
003EFD04 EB 02 JMP SHORT 003EFD08
再下来:
003EFD08 58 POP EAX ; 003EFCAF
003EFD09 E8 25000000 CALL 003EFD33 《====疑问call
3EFD09这个call跟进会在产生异常后退出,不跟进会跑到系统里出不来,然后就飞了。我的疑问是这样的程序如何手动跟?
asprotect的壳用工具都能找到入口点吗?是不是不用手动跟啦?
另外,在xp下一些很简单的壳,转存以后都要修复输入表吗?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)