没什么说得非常简单,教程写的不太好 ,请大家凑合着看吧!!
工具:od loadpe imprec peid
平台:2K
查壳:aspr1.23rc21
除了内存异常以外全部忽略,隐藏OD
载入文件
00401000 > 68 01F05C00 push ndMenu.005CF001
00401005 E8 01000000 call ndMenu.0040100B
0040100A C3 retn
0040100B C3 retn
看过很多大虾的文章直接shift+f9到最后一次异常
011C2AA6 3100 xor dword ptr ds:[eax],eax//到这里
011C2AA8 64:8F05 0000000>pop dword ptr fs:[0]//在这里下段F9
011C2AAF 58 pop eax
011C2AB0 833D 786D1C01 0>cmp dword ptr ds:[11C6D78],0
011C2AB7 74 14 je short 011C2ACD
011C2AB9 6A 0C push 0C
011C2ABB B9 786D1C01 mov ecx,11C6D78
011C2AC0 8D45 F8 lea eax,dword ptr ss:[ebp-8]
011C2AC3 BA 04000000 mov edx,4
011C2AC8 E8 63E1FFFF call 011C0C30
011C2ACD FF75 FC push dword ptr ss:[ebp-4]
011C2AD0 FF75 F8 push dword ptr ss:[ebp-8]
011C2AD3 8B45 F4 mov eax,dword ptr ss:[ebp-C]
011C2AD6 8338 00 cmp dword ptr ds:[eax],0
011C2AD9 74 02 je short 011C2ADD
011C2ADB FF30 push dword ptr ds:[eax]
011C2ADD FF75 F0 push dword ptr ss:[ebp-10]
011C2AE0 FF75 EC push dword ptr ss:[ebp-14]
011C2AE3 C3 retn//不能在这里直接下段程序会飞的,
之后再RETN
返回到 011D3BC4
011D3BC4 /E9 C9070000 jmp 011D4392//跳转 这里我们要是f8的话会绕很的圈子//所以直接在下一行f4
011D3BC9 |E6 2F out 2F,al
011D3BCB |5C pop esp
011D3BCC |B9 73E73470 mov ecx,7034E773
011D3BD1 |35 5DEBD7AF xor eax,AFD7EB5D
011D3BD6 |5F pop edi
到这里011D3BC9 /0F81 00000000 jno 011D3BCF
011D3BCF \66:D3FB sar bx,cl
011D3BD2 E8 00000000 call 011D3BD7//走到这里
我们然后用内存断点 401000处下访问断点
0057FEDC 55 push ebp//OEP了 loadpe dump之
0057FEDD 8BEC mov ebp,esp
0057FEDF B9 04000000 mov ecx,4
0057FEE4 6A 00 push 0
0057FEE6 6A 00 push 0
0057FEE8 49 dec ecx
0057FEE9 ^ 75 F9 jnz short ndMenu.0057FEE4
0057FEEB 51 push ecx
0057FEEC 53 push ebx
0057FEED B8 4CF85700 mov eax,ndMenu.0057F84C
0057FEF2 E8 6570E8FF call ndMenu.00406F5C
然后修复打开 imprec OEP改为 0057FEDC -400000=17FEDC 点ITA AUTO SEARCH 然后GET Iimports 在点show invalid 先用追踪级别1追踪 然后 aspr1.23插件修复 最后FIX DUMP
完毕了.夜凉如水[BCG]
[培训]科锐逆向工程师培训第53期2025年7月8日开班!