-
-
[旧帖] [求助]不懂,提问 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,请说清楚一点理由。
有点啰嗦,见笑了。
壳的入口处。
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,请说清楚一点理由。
有点啰嗦,见笑了。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
看原图
赞赏
雪币:
留言: