-
-
[讨论]ASPack 2.12 -> Alexey Solodovnikov脱壳奇怪的问题
-
发表于: 2009-4-30 12:58 1866
-
因为看了天草的教程,觉得ImportREC1.6_fix 界面比较大,所以想自己DIY.
目标 ,Import REConstructor 1.6 Final cao_cong汉化版本
OD载入后停在:
00481001 > 60 pushad
00481002 E8 03000000 call ImportRE.0048100A 到此行ESP定律
00481007 - E9 EB045D45 jmp 45A514F7
0048100C 55 push ebp
0048100D C3 retn
0048100E E8 01000000 call ImportRE.00481014
00481013 EB 5D jmp short ImportRE.00481072
00481015 BB EDFFFFFF mov ebx,-13
0048101A 03DD add ebx,ebp
0048101C 81EB 00100800 sub ebx,81000
下了内存访问断点后,F9运行,到达:
004813B0 /75 08 jnz short ImportRE.004813BA
004813B2 |B8 01000000 mov eax,1
004813B7 |C2 0C00 retn 0C
004813BA \68 00C04700 push ImportRE.0047C000
004813BF C3 retn
然后单步F8:,到达:
0047C000 C705 96924200 E8852D>mov dword ptr ds:[429296],52D85>
0047C00A 66:C705 9A924200 009>mov word ptr ds:[42929A],9000
0047C013 E9 AB000000 jmp ImportRE.0047C0C3
0047C018 0000 add byte ptr ds:[eax],al
0047C01A 0000 add byte ptr ds:[eax],al
0047C01C 0000 add byte ptr ds:[eax],al
0047C01E 0000 add byte ptr ds:[eax],al
0047C020 60 pushad
0047C021 68 68C04700 push ImportRE.0047C068 ; ASCII "user32.dll"
因误认为是OEP:所以用LordPE V1.4脱壳,然后用ImportREC1.6_fix 修复,程序可以运行.
PEID查修复后的程序,NOTHING FIND,于是回过头来看OEP,发现和常用的入口不一样,难道没到OEP,于是接着单步走到达这里:
00434E55 55 push ebp
00434E56 8BEC mov ebp,esp
00434E58 6A FF push -1
00434E5A 68 302E4500 push ImportRE.00452E30
00434E5F 68 A83F4300 push ImportRE.00433FA8
00434E64 64:A1 00000000 mov eax,dword ptr fs:[0]
00434E6A 50 push eax
00434E6B 64:8925 00000000 mov dword ptr fs:[0],esp
00434E72 83EC 58 sub esp,58
这不VC++的入口吗?脱壳修复后,PEID查壳为Microsoft Visual C++ 6.0
问题出来了,为什么地一次没到达OEP,也能脱壳修复成功呢?
目标 ,Import REConstructor 1.6 Final cao_cong汉化版本
OD载入后停在:
00481001 > 60 pushad
00481002 E8 03000000 call ImportRE.0048100A 到此行ESP定律
00481007 - E9 EB045D45 jmp 45A514F7
0048100C 55 push ebp
0048100D C3 retn
0048100E E8 01000000 call ImportRE.00481014
00481013 EB 5D jmp short ImportRE.00481072
00481015 BB EDFFFFFF mov ebx,-13
0048101A 03DD add ebx,ebp
0048101C 81EB 00100800 sub ebx,81000
下了内存访问断点后,F9运行,到达:
004813B0 /75 08 jnz short ImportRE.004813BA
004813B2 |B8 01000000 mov eax,1
004813B7 |C2 0C00 retn 0C
004813BA \68 00C04700 push ImportRE.0047C000
004813BF C3 retn
然后单步F8:,到达:
0047C000 C705 96924200 E8852D>mov dword ptr ds:[429296],52D85>
0047C00A 66:C705 9A924200 009>mov word ptr ds:[42929A],9000
0047C013 E9 AB000000 jmp ImportRE.0047C0C3
0047C018 0000 add byte ptr ds:[eax],al
0047C01A 0000 add byte ptr ds:[eax],al
0047C01C 0000 add byte ptr ds:[eax],al
0047C01E 0000 add byte ptr ds:[eax],al
0047C020 60 pushad
0047C021 68 68C04700 push ImportRE.0047C068 ; ASCII "user32.dll"
因误认为是OEP:所以用LordPE V1.4脱壳,然后用ImportREC1.6_fix 修复,程序可以运行.
PEID查修复后的程序,NOTHING FIND,于是回过头来看OEP,发现和常用的入口不一样,难道没到OEP,于是接着单步走到达这里:
00434E55 55 push ebp
00434E56 8BEC mov ebp,esp
00434E58 6A FF push -1
00434E5A 68 302E4500 push ImportRE.00452E30
00434E5F 68 A83F4300 push ImportRE.00433FA8
00434E64 64:A1 00000000 mov eax,dword ptr fs:[0]
00434E6A 50 push eax
00434E6B 64:8925 00000000 mov dword ptr fs:[0],esp
00434E72 83EC 58 sub esp,58
这不VC++的入口吗?脱壳修复后,PEID查壳为Microsoft Visual C++ 6.0
问题出来了,为什么地一次没到达OEP,也能脱壳修复成功呢?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: