两次反汇编代码不一样,怎么回事?
这是我第一次脱壳,不要见笑
脱壳的是2007年PYG认证crackme
用esp很容易脱掉
先F8一下
对【ESP】下硬件访问断点
然后F9
004C6260 /74 0A je short 004C626C
004C6262 |61 popad
004C6263 |9D popfd
004C6264 |B8 01000000 mov eax, 1
004C6269 |C2 0C00 retn 0C
004C626C \61 popad
004C626D 9D popfd ;按F9后就来到这句
004C626E - E9 190EFBFF jmp 0047708C ;跳往OEP
F8两次,来到0047708C
0047708C 55 db 55 ; CHAR 'U'
0047708D 8B db 8B
0047708E EC db EC
0047708F 83 db 83
00477090 C4 db C4
00477091 F0 db F0
00477092 B8 db B8
00477093 . 04 6E add al, 6E
00477095 . 47 inc edi
00477096 . 00E8 add al, ch
00477098 . 50 push eax
00477099 . F4 hlt
0047709A . F8 clc
0047709B . FFA1 0C934700 jmp dword ptr [ecx+47930C]
004770A1 8B db 8B
然后用OD插件dump出来
竟然直接可以运行,是delphi写的
用OD再载入dump出来的程序
0047708C > $ 55 push ebp
0047708D . 8BEC mov ebp, esp
0047708F . 83C4 F0 add esp, -10
00477092 . B8 046E4700 mov eax, 00476E04
00477097 . E8 50F4F8FF call 004064EC
0047709C . A1 0C934700 mov eax, dword ptr [47930C]
004770A1 . 8B00 mov eax, dword ptr [eax]
004770A3 . E8 7CCEFDFF call 00453F24
004770A8 . A1 0C934700 mov eax, dword ptr [47930C]
004770AD . 8B00 mov eax, dword ptr [eax]
004770AF . BA EC704700 mov edx, 004770EC ; ASCII "[PYG]CrackMe2007"
我想问下,为什么两次反汇编代码不一样
第一次可以用OD反汇编成第二次那种吗?分析代码我试过,右键分析代码好像不行
还有一个问题,直接dump出来运行没出错,为什么用ImportREC_fix修复了一下反而又出错了呢
另外问下,这个crackme是不是检测dede,并结束它,我下载的dede总是打不开。。。。。。。。
多谢拉!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课