• 标 题:用TRW快速手脱Armadillo V2.20加壳程序——Win98的Calc.exe、Notepad.exe等
  • 作 者:fly
  • 时 间:2003年10月04日 04:15
  • 链 接:http://bbs.pediy.com

用TRW快速手脱Armadillo V2.20加壳程序——Win98的Calc.exe、Notepad.exe等
 

 
【软件简介】:记事本可能是被大家使用最多的实验品了。Win98的计算器在XP下也可以运行。

【作者声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!

【调试环境】:Win98SE、TRW2000娃娃修改版、PEiD、LordPE、ImportREC、W32Dasm 9.0白金版

————————————————————————————————— 
【脱壳过程】:
          

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 edxdword ptr [004132E8]
                                  ====>F11返回到这!

:00406F65 3315F0324100            xor edxdword ptr [004132F0]
:00406F6B 3315EC324100            xor edxdword ptr [004132EC]
:00406F71 3315F4324100            xor edxdword ptr [004132F4]
:00406F77 89951CF8FFFF            mov dword ptr [ebp+FFFFF81C], edx
                                  ====>EDX=010119E0            这就是OEP值  :-)

:00406F7D 8D8564F7FFFF            lea eaxdword ptr [ebp+FFFFF764]
:00406F83 50                      push eax
:00406F84 8B0DE4684100            mov ecxdword 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 edxdword ptr [004132E8]
                                  ====>F11返回到这!

:00406F65 3315F0324100            xor edxdword ptr [004132F0]
:00406F6B 3315EC324100            xor edxdword ptr [004132EC]
:00406F71 3315F4324100            xor edxdword ptr [004132F4]
:00406F77 89951CF8FFFF            mov dword ptr [ebp+FFFFF81C], edx
                                  ====>EDX=004010CC             这就是OEP值  :-)

:00406F7D 8D8564F7FFFF            lea eaxdword ptr [ebp+FFFFF764]
:00406F83 50                      push eax
:00406F84 8B0DE4684100            mov ecxdword 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 edxdword ptr [004132E8]
                                  ====>F11返回到这!

:00406F65 3315F0324100            xor edxdword ptr [004132F0]
:00406F6B 3315EC324100            xor edxdword ptr [004132EC]
:00406F71 3315F4324100            xor edxdword ptr [004132F4]
:00406F77 89951CF8FFFF            mov dword ptr [ebp+FFFFF81C], edx
                                  ====>EDX=0043E7C4             这就是OEP值  :-)

:00406F7D 8D8564F7FFFF            lea eaxdword ptr [ebp+FFFFF764]
:00406F83 50                      push eax
:00406F84 8B0DE4684100            mov ecxdword 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,正常运行!


————————————————————————————————— 
    
                                
         ,     _/ 
        /| _.-~/            _     ,        青春都一饷
       ( /~   /              ~-._ |
       `\  _/                   ~ )          忍把浮名 
   _-~~~-.)  )__/;;,.          _  //'
  /'_,   --~    ~~~-  ,;;___(  (.-~~~-.        换了破解轻狂
 `~ _( ,_..-- (     ,;'' /    ~--   /._` 
  /~~//'   /' `~         ) /--.._, )_  `~
  "  `~"  "      `"      /~'`    `\~~   
                         "     "   "~'  ""

    

               Cracked By 巢水工作坊——fly [OCN][FCG]

                       2003-10-02  17:30