【工具】PEiD,OllyDbg,ImportREC
【目的】学习研究
【目标】Win98记事本,用DxPack V0.86加过壳的
最近对脱壳比较感兴趣,便从网上搜集了一些资料拿来研究,收获不小。
1、先用PEiD查壳,当然是DxPack V0.86 -> Dxd *,我用的PEiD是最新版的,能够查出这个壳,以前的版本是查不出的。
2、载入OllyDbg ,会弹出一个入口点警报对话框,点确定,接着又弹出一个对话框询问是否继续分析,选否。
0040D000 > 60 PUSHAD //程序停在这里,F8单步执行
0040D001 E8 00000000 CALL dxpack.0040D006 //C
0040D006 5D POP EBP
0040D007 8BFD MOV EDI,EBP
0040D009 81ED 06104000 SUB EBP,dxpack.00401006
0040D00F 2BBD 94124000 SUB EDI,DWORD PTR SS:[EBP+401294]
0040D015 81EF 06000000 SUB EDI,6
0040D01B 83BD 14134000 0>CMP DWORD PTR SS:[EBP+401314],1
0040D022 0F84 2F010000 JE dxpack.0040D157 //一直F8单步执行到这里,发现是个长跳转,回车
0040D157 8B85 9C124000 MOV EAX,DWORD PTR SS:[EBP+40129C] //按回车后,跳到这行,按F4执行到这
0040D15D 03C7 ADD EAX,EDI //F8继续单步执行
0040D15F 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
0040D163 61 POPAD //关键,脱壳时到POPAD就要注意了,一般程序的直正入口地址就在这附近
0040D164 FFE0 JMP EAX //到这里,程序的真正入口地址出现了,就在EAX寄存器中,再按F8
004010CC 55 PUSH EBP //到了,这就是程序的真正入口地址
004010CD 8BEC MOV EBP,ESP
004010CF 83EC 44 SUB ESP,44
004010D2 56 PUSH ESI
点右键用OllyDump脱壳
3 、用ImportREC修复一下