看了KSSD的脱壳技术的内存断点脱壳法,自己也动手试了里面的例子,手动到达OEP,dump下来后,程序能正常运行,但是PEID无法检测到该程序是VC6写的。于是又重新调了一次,发现OEP和VC6正常程序的OEP不一样,但是脱壳后的OEP确实是code 段的第一次执行断点,代码如下,请问怎么修复该OEP,让PEID能够正常识别,直接将开头部分改成正常OEP的代码可以吗?
代码如下
004010CC FFD7 CALL EDI ; unpackme.004010CE
004010CE 58 POP EAX
004010CF 83EC 44 SUB ESP,44
004010D2 56 PUSH ESI
004010D3 90 NOP
004010D4 E8 B518F9FF CALL 0039298E
004010D9 8BF0 MOV ESI,EAX
004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]
004010DD 3C 22 CMP AL,22
004010DF 75 1B JNZ SHORT 004010FC
004010E1 56 PUSH ESI
004010E2 90 NOP
004010E3 E8 A618F9FF CALL 0039298E
004010E8 8BF0 MOV ESI,EAX
004010EA 8A00 MOV AL,BYTE PTR DS:[EAX]
004010EC 84C0 TEST AL,AL
004010EE 74 04 JE SHORT 004010F4
004010F0 3C 22 CMP AL,22
004010F2 ^ 75 ED JNZ SHORT 004010E1
004010F4 803E 22 CMP BYTE PTR DS:[ESI],22
004010F7 75 15 JNZ SHORT 0040110E
004010F9 46 INC ESI
004010FA EB 12 JMP SHORT 0040110E
004010FC 3C 20 CMP AL,20
004010FE 7E 0E JLE SHORT 0040110E
00401100 56 PUSH ESI
00401101 FF15 F4644000 CALL DWORD PTR DS:[4064F4] ; user32.CharNextA
00401107 8038 20 CMP BYTE PTR DS:[EAX],20
0040110A 8BF0 MOV ESI,EAX
请牛人指点下,谢谢
代码如下
004010CC FFD7 CALL EDI ; unpackme.004010CE
004010CE 58 POP EAX
004010CF 83EC 44 SUB ESP,44
004010D2 56 PUSH ESI
004010D3 90 NOP
004010D4 E8 B518F9FF CALL 0039298E
004010D9 8BF0 MOV ESI,EAX
004010DB 8A00 MOV AL,BYTE PTR DS:[EAX]
004010DD 3C 22 CMP AL,22
004010DF 75 1B JNZ SHORT 004010FC
004010E1 56 PUSH ESI
004010E2 90 NOP
004010E3 E8 A618F9FF CALL 0039298E
004010E8 8BF0 MOV ESI,EAX
004010EA 8A00 MOV AL,BYTE PTR DS:[EAX]
004010EC 84C0 TEST AL,AL
004010EE 74 04 JE SHORT 004010F4
004010F0 3C 22 CMP AL,22
004010F2 ^ 75 ED JNZ SHORT 004010E1
004010F4 803E 22 CMP BYTE PTR DS:[ESI],22
004010F7 75 15 JNZ SHORT 0040110E
004010F9 46 INC ESI
004010FA EB 12 JMP SHORT 0040110E
004010FC 3C 20 CMP AL,20
004010FE 7E 0E JLE SHORT 0040110E
00401100 56 PUSH ESI
00401101 FF15 F4644000 CALL DWORD PTR DS:[4064F4] ; user32.CharNextA
00401107 8038 20 CMP BYTE PTR DS:[EAX],20
0040110A 8BF0 MOV ESI,EAX
请牛人指点下,谢谢