PEiD检测是FSG v1.10 (Eng) -> dulek/xt,OD载入后停在这:
0041C087 > /EB 01 JMP SHORT upx_lock.0041C08A
F7一下,到这:
0041C08A 60 PUSHAD
0041C08B E8 00000000 CALL upx_lock.0041C090 ; F8到这时命令行输入hr esp,回车
F8两次到那个0041C08B处的指令,命令行输入 hr esp,回车,现在就开始F9,中间用SHIFT+F9过一次异常,再按两次F9到这:
0040F534 39C4 CMP ESP,EAX ; 到这
0040F536 ^ 75 FA JNZ SHORT upx_lock.0040F532
0040F538 83EC 80 SUB ESP,-80
0040F53B - E9 9420FFFF JMP upx_lock.004015D4 ; 在这按F4
在0040F53B处的那条JMP指令上按F4,后面一直按F8,一直到这里:
00401654 6A 00 PUSH 0 ; OEP
00401656 E8 A10A0000 CALL upx_lock.004020FC ; JMP 到 kernel32.GetModuleHandleA
0040165B A3 52434000 MOV DWORD PTR DS:[404352],EAX
00401660 68 C8000000 PUSH 0C8
00401665 50 PUSH EAX
00401666 E8 310A0000 CALL upx_lock.0040209C ; JMP 到 USER32.LoadIconA
0040166B A3 56434000 MOV DWORD PTR DS:[404356],EAX
00401670 68 897F0000 PUSH 7F89
00401675 6A 00 PUSH 0
00401677 E8 1A0A0000 CALL upx_lock.00402096 ; JMP 到 USER32.LoadCursorA
00401654就是OEP。
这个东西是被人重新加过壳的,原版就是用其自身upx_lock保护的。我传个原版和脱壳版,用法就是先把程序用UPX加壳,再用这个处理一下。