我是新手,今天研究一个程序,用OD加载以后,总是在entry point就出现非法指令的exception。如下:
用pe editor看的entry point就是00429414
00429414 > $ 47 INC EDI
00429415 .^E2 8F LOOPD SHORT Updater.004293A6
00429417 . 50 PUSH EAX
00429418 . 4F DEC EDI
00429419 . 4D DEC EBP
0042941A . 45 INC EBP
0042941B . 0846 84 OR BYTE PTR DS:[ESI-7C],AL
0042941E . E3 28 JECXZ SHORT Updater.00429448
00429420 . CA 4200 RETF 42
; Far return
00429423 . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00429429 . 50 PUSH EAX
0042942A . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
00429431 . 83EC 58 SUB ESP,58
00429434 . 53 PUSH EBX
00429435 . 56 PUSH ESI
00429436 . 57 PUSH EDI
00429437 . 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
0042943A .-E9 95607400 JMP 00B6F4D4
但是如果先运行后再attach,这时候再回头看入口处的代码,就是下面这样:
00429414 > $ 55 PUSH EBP
00429415 . 8BEC MOV EBP,ESP
00429417 . 6A FF PUSH -1
00429419 . 68 E8E14600 PUSH Updater.0046E1E8
0042941E . 68 30CA4200 PUSH Updater.0042CA30
; SE handler installation
00429423 . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
00429429 . 50 PUSH EAX
0042942A . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
00429431 . 83EC 58 SUB ESP,58
00429434 . 53 PUSH EBX
00429435 . 56 PUSH ESI
00429436 . 57 PUSH EDI
00429437 . 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
0042943A .-E9 3D2B7500 JMP 00B7BF7C
请问entry point难道不是进程被加载后执行的第一段代码吗?这种情况是怎么造成的呢?如果我想从头跟踪,有什么解决办法吗?
谢谢
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课