(这是改的原主题,因为今日主题已满,另外原主题浪费资源,就修改成这个了)
请教各位大虾,以下是我脱壳过程:
1.照教程<<【原创】ASProtect 2.1x SKE之木马克星5.50 build 2403 脱壳分析 >>:
首先找出它共异常33次,停留在最后一次,代码如下:
00C0FA97 F2: prefix repne:
00C0FA98 C1D8 C5 rcr eax, 0C5
00C0FA9B 83C8 FF or eax, FFFFFFFF
00C0FA9E 40 inc eax
00C0FA9F 64:FF30 push dword ptr fs:[eax]
00C0FAA2 64:8920 mov fs:[eax], esp
00C0FAA5 C700 EFCA5C85 mov dword ptr [eax], 855CCAEF
00C0FAAB 67:64:8F06 0000 pop dword ptr fs:[0]
00C0FAB1 83C4 04 add esp, 4
00C0FAB4 83E8 AF sub eax, -51
00C0FAB7 83C8 4B or eax, 4B
00C0FABA 58 pop eax
然后在代码段也就是401000处下断,如图:
照教程接着shift+F9就能断在OEP,形式理论上如下;
005A4524 55 PUSH EBP 这就是OEP处
005A4525 8BEC MOV EBP,ESP
005A4527 B9 04000000 MOV ECX,4
005A452C 6A 00 PUSH 0
005A452E 6A 00 PUSH 0
005A4530 49 DEC ECX
005A4531 ^ 75 F9 JNZ SHORT iparmor.005A452C
但是我的却是这样:
005B0A8B 8800 mov [eax], al
005B0A8D 38FF cmp bh, bh
005B0A8F 25 54B35C00 and eax, 5CB354
005B0A94 - FF25 58B35C00 jmp [5CB358] ; kernel32.GetLocalTime
005B0A9A - FF25 5CB35C00 jmp [5CB35C] ; kernel32.GetLocaleInfoA
005B0AA0 E8 5BF58800 call 00E40000
005B0AA5 AA stos byte ptr es:[edi]
005B0AA6 E8 55F58800 call 00E40000
005B0AAB AD lods dword ptr [esi]
005B0AAC E8 4FF58800 call 00E40000
005B0AB1 A0 E849F588 mov al, [88F549E8]
005B0AB6 00DA add dl, bl
005B0AB8 - FF25 70B35C00 jmp [5CB370] ; kernel32.GetProcAddress
005B0ABE - FF25 74B35C00 jmp [5CB374] ; kernel32.GetProcessHeap
005B0AC4 E8 37F58800 call 00E40000
005B0AC9 D5 E8 aad 0E8
我试了下,如果再shift+F9就跑起来了,
请教是哪一步错了或者有其他原因?应该怎么找OEP?
[注意]看雪招聘,专注安全领域的专业人才平台!