• 标 题:The Armadillo Software Protection System Version2.51 full unpack cracked by zombieys (1千字)
  • 作 者:zombieys
  • 时 间:2002-4-13 9:27:02
  • 链 接:http://bbs.pediy.com

Program          : The Armadillo Software Protection System Version2.51
Type            : Software Protection System
OS              : Win9x/Me/2k
Protection      : Armadillo?
Homepage        : http://www.siliconrealms.com/
Download        : http://mud.sz.jsinfo.net/per/aaron/files/protectors/win/armd250.zip


Cracked by      : zombieys[CCG]
Release type    : full unpack cracked
Release date    : Apr 13,2002
Release name    : cr-Armadillo251.exe (749,568 bytes)
Release Download : http://www.fuluck.com/newpage/cr-Armadillo251.rar


技术参考:
The Armadillo Software Protection System
Version 2.51

(1)找入口:
  bpx VirtualProtect,在最后一次被中断后,按大约2次f12返回Armadillo领空,按f10带过一个call,在下一个call进入,继续按f10走到call edi处,edi里存放的就是入口地址

(2)脱壳
 
  请参考Hying[CCG]老大的原文

  首先一点是Armadillo是通过类似于调试的方法来运行程序的。
新版本Armadillo脱壳的一个难点是它的代码段是分页解密的,我估计它的做法是将代码段锁定,即将其属性设为不可读、写、执行,当被执行到时会产生一个页面保护错误,而调试程序就会捕获这个错误,将对应的页面解锁并解密,然后返回执行。
要对它脱壳的话可以考虑这样做,编一个小程序,如下:
push    PAGE_READWRITE
push    MEM_COMMIT
push    100000h        <-申请内存的大小,可大一点。
push    0
call    VirtualAlloc    <-申请内存
mov    edi,eax
mov    ecx,????    <-文件映象大小减1000h
mov    esi,401000h    <-基址加1000h,有的程序不是这个值
rep  movsb
push    80000000h
call    Sleep
在原程序中找个空间,尽量不要在代码段范围内,将着这段程序放进去,然后执行它,执行完后,你申请到的内存中就放的是解密后的程序,只要DUMP出来,再加一个可用的文件头,再修复输入表什么的就可以执行了。

zombieys[CCG]
2002.04.13