首页
社区
课程
招聘
[旧帖] [求助]不懂,提问 0.00雪花
发表于: 2008-8-19 16:06 2577

[旧帖] [求助]不懂,提问 0.00雪花

2008-8-19 16:06
2577
先用ASPACK将NOTEPAD.EXE加壳。用OllyDbg(以下简称OD)载入。看见光标停在
壳的入口处。
0040D001 >  60              PUSHAD ;壳的入口。准备开始解压,保护寄存器
0040D002    E8 03000000    CALL    NOTEPAD.0040D00A
……
我们不管它,直接向下翻页找POPAD指令。在40D3AF处找到POPAD
……
0040D3AF    61              POPAD ;解压完成,恢复寄存器
0040D3B0    75 08          JNZ    SHORT NOTEPAD.0040D3BA
0040D3B2    B8 01000000    MOV    EAX, 1
0040D3B7    C2 0C00        RETN    0C
0040D3BA    68 CC104000    PUSH    NOTEPAD.004010CC ;返回到原程序OEP处
0040D3BF    C3              RETN
……
选定40D3AF这一行,F4运行到此处。在这里说明壳已经完成解压工作。并且返回到原
程序的入口处。F8单步到4010CC,这里便是原程序的OEP。用DUMP插件直接DUMP出来就
可以了(在DUMP时注意将入口点改为10CC,即4010CC-400000=10CC,400000是映象基
地址)。文件大小是77059字节,用PEditor重建PE头便可以了。未压缩的文件大小是
53248字节,脱壳后的文件大小是60930字节。

这是我从网上看到的一例脱壳实例。但是有几点不明白,请高手给予指教:
一:上面说“壳已经完成解压工作。并且返回到原程序的入口处。”怎么是返回呢,壳是在软件的头部,应该为向下接下来顺序到程序的入口处,运行软件本身呀,怎么是返回呢。
二:上面说“F8单步到4010CC,这里便是原程序的OEP。”怎么确定这里就是原程序的OEP,请说清楚一点理由。
有点啰嗦,见笑了。

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//