我用OD载入后程序后,中断:bp MessageBoxA,运行F9,但是马上就进入
77E8BC3F 5F POP EDI
77E8BC40 5E POP ESI
77E8BC41 C9 LEAVE
77E8BC42 C2 1000 RETN 10
77E8BC45 > 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4]
77E8BC49 A1 F0A1EB77 MOV EAX,DWORD PTR DS:[77EBA1F0]
77E8BC4E 890D F0A1EB77 MOV DWORD PTR DS:[77EBA1F0],ECX
77E8BC54 C2 0400 RETN 4
77E8BC57 55 PUSH EBP
77E8BC58 8BEC MOV EBP,ESP
77E8BC5A 6A FF PUSH -1
状态栏提示:异常OEEDFADE,使用shift+F7/F8/F9忽略
没办法我就一步一步来,参照原程序追入重要CALL,终于在
00405393 3B45 E8 CMP EAX,DWORD PTR SS:[EBP-18]
00405396 74 07 JE SHORT 111.0040539F ; 原程序在这里是跳转成功的,但是脱壳后的并不跳!因为不知道它的运算,所以只好把这个跳转改成跳Jmp SHORT 111.0040539F
00405398 B0 04 MOV AL,4
0040539A E8 CDD4FFFF CALL 111.0040286C
0040539F 8345 E4 08 ADD DWORD PTR SS:[EBP-1C],8
004053A3 85DB TEST EBX,EBX
继续追下来还发现
00402781 B0 01 MOV AL,1
00402783 E9 E4000000 JMP 111.0040286C
00402788 85D2 TEST EDX,EDX
0040278A 74 10 JE SHORT 111.0040279C
0040278C 50 PUSH EAX
0040278D 89D0 MOV EAX,EDX
0040278F FF15 3C104700 CALL DWORD PTR DS:[47103C] ; 111.0040213C
00402795 59 POP ECX
00402796 09C0 OR EAX,EAX
00402798 ^ 74 E7 JE SHORT 111.00402781 //原程序在这里不会跳回的,但是脱壳后的跳回了,于是我又改
JNZ SHORT 111.00402781
0040279A 8901 MOV DWORD PTR DS:[ECX],EAX
但是追到下面的时候就出错了
0040543F C703 01000000 MOV DWORD PTR DS:[EBX],1 //在这里状态栏:提示访问违规:正在写入[00000000]
00405445 83C3 04 ADD EBX,4
00405448 893B MOV DWORD PTR DS:[EBX],EDI
0040544A 83C3 04 ADD EBX,4
0040544D 8BD7 MOV EDX,EDI
0040544F 2B55 F0 SUB EDX,DWORD PTR SS:[EBP-10]
00405452 0FAF55 E8 IMUL EDX,DWORD PTR SS:[EBP-18]
00405456 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
00405459 0FAF45 F0 IMUL EAX,DWORD PTR SS:[EBP-10]
我把修改的复制保存成另外一个文件运行时提示out of mouory!
晕死,没办法继续下去了,但是如果刚才那两个地方不改就在前面的CALL后直接转到错误(最上面的代码)!高手千万不要笑我,如果有好的方法请指点一二(头疼中.....)