时间: 2003-10-04 周六, 上午4:15
标题: 用TRW快速手脱Armadillo V2.20加壳程序
――Win98的Calc.exe...
用TRW快速手脱Armadillo V2.20加壳程序――Win98的Calc.exe、Notepad.exe等
【脱壳过程】:
Armadillo V2.20 已是很旧的版本了,但对于我等脱壳菜鸟来说依旧是有学习价值的。我们是幸运的,有那么多的大侠把自己的心得无私的奉献出来,感谢这些心胸宽广的大侠们!这次我主要是学习了 leo_cyl1 大侠的《关于Armadillo 1.8x-2.x的anti-debug&加壳原理初步探讨和脱壳方法》。
Armadillo V2.20 反跟踪:①、调用creatfilea检测SoftICE;②、调用IsDebuggerPresent检测windows调试器是否存在,如Ollydbg;③、INT3 ,在程序中使用一个伪装的中断来阻止程序的运行。
所以,为了简单,我在98下用trw2000调试,下faults off就可以避开这些反跟踪了。
注:以下方法仅仅针对用Armadillo V2.20版 加壳的部分程序,不适用于Armadillo主程序。
―――――――――――――――――――――――――――――――――
一、Win98的Calc.exe
下断:BPX Sleep 断下后,F5三次程序运行,所以再次LOAD,F5二次,BD暂停断点,F11返回程序领空
* Reference To: KERNEL32.Sleep, Ord:0296h
|
:00406F59 FF1560104100 Call dword ptr [00411060]
:00406F5F 8B15E8324100 mov edx, dword ptr [004132E8]
====>F11返回到这!
:00406F65 3315F0324100 xor edx, dword ptr [004132F0]
:00406F6B 3315EC324100 xor edx, dword ptr [004132EC]
:00406F71 3315F4324100 xor edx, dword ptr [004132F4]
:00406F77 89951CF8FFFF mov dword ptr [ebp+FFFFF81C], edx
====>EDX=010119E0 这就是OEP值
:00406F7D 8D8564F7FFFF lea eax, dword ptr [ebp+FFFFF764]
:00406F83 50 push eax
:00406F84 8B0DE4684100 mov ecx, dword ptr [004168E4]
:00406F8A 51 push ecx
* Reference To: KERNEL32.SetThreadContext, Ord:0283h
|
:00406F8B FF1590104100 Call dword ptr [00411090]
――――――――――――――――――――――――
下断:BPX 010119E0 F5运行,断下! 脱壳:PDEDUMP 1.EXE BC取消断点,F5运行程序
运行ImportREC,选择CALC.TMP0进程。把OEP改为000119E0,点IT AutoSearch,点“Get Import”,
FixDump,正常运行! 217K ->96K
―――――――――――――――――――――――――――――――――
二、Win98的记事本
下断:BPX Sleep 断下后,F5二次程序运行,所以再次LOAD,F5一次,F11返回程序领空
* Reference To: KERNEL32.Sleep, Ord:0296h
|
:00406F59 FF1560104100 Call dword ptr [00411060]
:00406F5F 8B15E8324100 mov edx, dword ptr [004132E8]
====>F11返回到这!
:00406F65 3315F0324100 xor edx, dword ptr [004132F0]
:00406F6B 3315EC324100 xor edx, dword ptr [004132EC]
:00406F71 3315F4324100 xor edx, dword ptr [004132F4]
:00406F77 89951CF8FFFF mov dword ptr [ebp+FFFFF81C], edx
====>EDX=004010CC 这就是OEP值
:00406F7D 8D8564F7FFFF lea eax, dword ptr [ebp+FFFFF764]
:00406F83 50 push eax
:00406F84 8B0DE4684100 mov ecx, dword ptr [004168E4]
:00406F8A 51 push ecx
* Reference To: KERNEL32.SetThreadContext, Ord:0283h
|
:00406F8B FF1590104100 Call dword ptr [00411090]
――――――――――――――――――――――――
下断:BPX 004010CC F5运行,断下! 脱壳:PDEDUMP 2.EXE BC取消断点,F5运行程序
运行ImportREC,选择NOTEPAD.TMP0进程。把OEP改为000010CC,点IT AutoSearch,点“Get Import”,
FixDump,正常运行! 208K ->56K
―――――――――――――――――――――――――――――――――
三、WDCT4.exe
下载地址:
http://bbs.tmc2.com.cn/non-cgi/usr/14/14_157.rar
这是前几日 东方龙 兄弟提到的软件。315K
相关页面:
http://tongtian.net/pediybbs/viewtopic.php?p=4018#
――――――――――――――――――――――――
下断:BPX Sleep 断下后,F5九次程序运行,所以再次LOAD,F5八次,F11返回程序领空
* Reference To: KERNEL32.Sleep, Ord:0296h
|
:00406F59 FF1560104100 Call dword ptr [00411060]
:00406F5F 8B15E8324100 mov edx, dword ptr [004132E8]
====>F11返回到这!
:00406F65 3315F0324100 xor edx, dword ptr [004132F0]
:00406F6B 3315EC324100 xor edx, dword ptr [004132EC]
:00406F71 3315F4324100 xor edx, dword ptr [004132F4]
:00406F77 89951CF8FFFF mov dword ptr [ebp+FFFFF81C], edx
====>EDX=0043E7C4 这就是OEP值
:00406F7D 8D8564F7FFFF lea eax, dword ptr [ebp+FFFFF764]
:00406F83 50 push eax
:00406F84 8B0DE4684100 mov ecx, dword ptr [004168E4]
:00406F8A 51 push ecx
* Reference To: KERNEL32.SetThreadContext, Ord:0283h
|
:00406F8B FF1590104100 Call dword ptr [00411090]
――――――――――――――――――――――――
下断:BPX 0043E7C4 F5运行,断下! 脱壳:PDEDUMP 3.EXE BC取消断点,F5运行程序
运行ImportREC,选择NOTEPAD.TMP0进程。把OEP改为0003E7C4,点IT AutoSearch,点“Get Import”,
FixDump,正常运行! 376K ->380K
―――――――――――――――――――――――――――――――――
【总 结】:
用TRW载入加Armadillo V2.20壳的程序,FULTS OFF,下断BPX Sleep,看看F5几次程序运行。重新LOAD,下断BPX Sleep,少按1次F5,F11返回程序领空,这时可以看见下面有几个xor e*x, dword ptr [004*****],异或的结果就是OEP值了。BD,暂停断点。BPX OEP,断下后PEDUMP脱壳,BC取消断点,F5运行程序。
运行ImportREC,选择****.TMP0进程。修改OEP,点IT AutoSearch,点“Get Import”,FixDump,正常运行!