Armadillo资料集锦

作者:佚名    文章来源:本站原创    点击数:    更新时间:2008-5-17

前段时间,我对Armadillo壳很感兴趣,于是收集了很多资料,想好好研究一番, 

这些文章来自很多站点,感谢:看学论坛,白菜乐园,探索杂志…… 

最近又看到很多Cracker在对付Armadillo时遇到了麻烦,所以拿到新论坛共享 

给大家.  

 

***************** 

第一章,大虾们的脱壳文章 

***************** 

 

---------------------------------------------------------------------- 

(1). 

---------------------------------------------------------------------- 

标 题:手動脫殼的方法. (975字) 

发信人:1212 

时 间:2000-9-17 22:53:30  

详细信息: 

 

噫!我以前貼過Armadillo的脫殼方法,怎麼不能舉一反三.  

[目標軟體]:VB power wrap V1.7  

[保護機制]:Armadillo保護,防Soft-ICE,時間限制.  

[使用工具]:1.Trw2000  

          2.Bw2000  

          3.Procdump32  

          4.Regmon  

[手動脫殼]:1.第一次執行被Armadillo保護的軟體,Armadillo會在C:\WINDOWS\TEMP\的目錄 

下解壓一個Armxxxx.tmp的文件,這是保護系統的dll,程式用它Anti-Debugger,設置時間標誌 

等等,並將所取得的環境資訊寫入註冊表中,以供程式比對運用,這個Key的路徑在 

HKLM\Software\The Sillicon Realms Toolworks\Armadillo,故若你的軟件試用期已過,你便 

需要把這個Key刪除,重新獲得試用。  

2.若你有安裝Soft-ICE,須先把它移除,以利作業,首先執行BW2000,按track,再執行vbrap.exe, 

首先在BW2000中顯示004085BB,等到NagBox出現,按OK後會再出現一個位址0048535 C這是 

VBRAP.tmp0的OEP這才是我們要的。  

3.用Trw2000載入vbrap.exe,下faults off,再下G 0048535C等到NagBox出現按OK後程式會中斷 

在0048535C,再下makepe(不是很穩定)或下suspend用Procdump32,選VBRAP.tmp0,dump(full), 

改OEP等於0008535C即可脫殼.  

          C-pen  2000\9\17   

---------------------------------------------------------------------- 

(2). 

---------------------------------------------------------------------- 

如何破解由Armadillo 1.8或1.8x保护的程序           

                                  程式猎人翻译 

工具: 

winhex 9.0 

w32dasm 8.7 或8.9版本(译者:最好使用8.93 gold版) 

不需要其它调试工具或一定不要运行它们。 

 

   无论你有无关于这新版本的经验或者没有掌握它,你在这里都可以学习到破解1.8或1.8x 

版的知识,你只要认真学习就可以了。 

 

   我们要研究的对象是Stay On Pro3.2,如果你没有这个程序,你可以到www.Stayonpro.c 

om处查找相应的程序下载。这是一个用于保持网络连接的软件。 

 

 

   在这里我将向大家介绍大部分版本的Armadillo基本保护,而那个软件连接网络的功能对 

我们不是很有用的。如果如果你现在空闲没有事情可做的话,就来研究一下Armadillo保护 

吧。 

 

   开始运行Armadillo保护的程序,通常都会在本地目录下生成一个临时文件(译者:这个 

文件在开始时生成,结束时删除),所在目录是程序当前的目录或在一个临时的目录中,这 

个文件名为armXXXX.tmp,文件是Armadillo access (security)DLL。当这个文件正在运行 

时,就可以被拷贝和汇编。在新的版本中这个文件通常隐藏在user\local seting\temp 目 

录中。 

 

   由CreateFileA创建的armXXXX.Tmp放在硬盘中并由主程序的LoadLibrary来调用,在Arma 

dillo中所有功能好象都是在这里加载到内存中的,以达到提供重要数据的作用。 

 

   现在主程序调用解压和解密的函数,在特定的版本中这个函数为GetProgramIinfor,Get 

ProgramInfo有检查softice的调试器及其它调试器的功能,这里通常使用以下几个步骤来破 

解这个保护的程序。 

1 三次调用creatfilea函数,分别使用文件名为"\\.\sice","\\.\ntice" "\\.\sice".(它 

是加密的形式)如果它们存在或GetlastError返回值不等于2,则程序标记,将debug旗标设 

为true。 

2 调用IsDebuggerPresent来检测windows调试器是否存在,对于softice等硬件调试器可以 

避开这个功能(译者:这个前后有点错误),如果检测到了,就将debug设true。 

3 有的版本,有一个对话框提示用户,如果当前系统中有调试器,就请关闭后重新运行程序 

。如果debug的值为true,就出现这个提示窗口。’ 

4 如果你现在看到“this use a secet key"这通常不是要求一个key,而是删除softice\th 

e sililcon的注册键值。当你一步一步跟踪时,程序知道一个debugger在跟踪或程序没有正 

确的调用代码出现上述问题。 

5 INT3 ,这是最后的保护。在程序中使用一个伪装的中断来阻止程序的运行。有人会说,s 

oftice不是不使用INT3,除非你自己设INT3为打开状态吗?错!在softice夸大了这个功能 

,而是实际中ebp被设为“BCHK”,不是一个指针,而是实际文本。在softice运行时,它有 

一个调用边界检查,对于“BCHK”加载到ebp中断点中(INT3)调用的句柄对softice进行边 

界检查,softice不准备放入数据或堆栈也没有准备。为了解决这个保护,你将对IsDebugge 

rPresent进行设断,你需要改变这个返回值,它是一个非常好的中断。。按F12从那个函数 

返回,再按二次F12跳到原程序中,离开了security(armadillo)DLL,现在按F10(单步)一 

段时间,你将达到INT3中断处,ebp初始化后停止,下R ebp=44444444命令,现在就可以按c 

trl+d退出ice了,这个目标程序就可以运行了。现在将如何去做呢?如果没有windows 或 s 

oftice等调试工具,INT3将产生一个无句柄值,如果有则产生一个有值的句柄。 

 

  现在你知道了前面所述,你也不再需要任何上面的知识了(译者:下面方法是太高了,不 

用使用softice等调试工具)。你能够使用简单的方法来破解Armadillo程序,它不需要确定 

由何版本的Armadilo的加密形式,你将知道你的程序是否用1.8-1.8X加密。然而你需要知道 

的是这个程序是由Armadilo保护的。其它有用的信息可以使用GetPrivateProFileString来 

获得,它的相关方面可以告诉你其信息。想一想,一些程序员付$89.00来使用这个程序,唯 

一可以免费的是工作在silicon Realm Toolwork的人员,现在我们就将完全使用它了。 

 

1 不使用任何调试器(包括softice),开始运行保护的程序。你所需要的文件是你运行的 

程序文件名。它由数字和“progname.tmpX"组成。如果你在开始运行“StayOnPro.exe"时, 

你可以看到在当前目录中“StayOnPro.tmp()"的文件。使用ctrl+c and ctrl+V来拷贝这个 

文件。 

2 重命名这个文件为"StayOnPro(undilloed).exe" 

3 开始winhex 9.0 

4 按ALT+F9开始处理内存部分 

5 选拔stayonpro.tmp()为主内存 

6 到地址0040000H处,通常这个地址是windows的exe文件开始处。如果你看到MZ字样就找到 

了正确的首地址了。 

7 现在我们要选择一个大的内存块。先从00400000H处开始到004323D6H处,选择这之间的内 

存块。我们去除前面显示00字节的块。通常程序在00400600H或00401000处开始运行程序, 

代码段通常在00401000H处开始。你将选择那些除了00块以外的所有块。第二个00字节块开 

始于00423D7H,因此我们到达004323D6H,有时代码段从原来的00401000H处移到00400600H 

处。Armadillo给出的代码标记是X的地方就为代码段开始的地方。 

8 按CTRL+C,拷贝选择的内存块。 

9 选择文件/打开选项后选择打开stayonpro(undilloed).exe文件。 

10 将指针放在有4D标记的块上,选择编辑/剪粘板数据/写入选项,出现一个对话框显示写 

入的偏移量为0时,按ok。 

11 保存文件 

12 现在stay on pro 就已经被完全解密了。你可以很轻松的对它进行反汇编和追踪了。 

13 你需要一个调试器了吗?不需要,说感谢自己吧。 

 

下面是如何破解出Armadillo 1.80-1.8X本身和Armadillo 1.80-1.8X程序。 

 

1 不使用任何调试器(包括softice),开始保护的程序。你所需要的是你运行的程序文件 

名。它由数字和“progname.tmpX"组成。如果你在开始运行“Armadillo.exe"时,你可以看 

到在当前目录中“Armadillo.tmp()"的文件。使用ctrl+c and ctrl+V来拷贝这个文件。 

2 重命名这个文件为"Armadillo(undilloed).exe" 

3 开始winhex 9.0 

4 按ALT+F9开始处理内存部分 

5 选拔Armadillo.tmp()为主内存 

6 到地址0040000H处,通常这个地址是windows的exe文件开始处。如果你看到MZ字样就找到 

了正确的首地址了。 

7 现在我们要选择一个大的内存块。先从显示4D字样的00400000H处开始到0041894bH处,选 

择这之间的内存块。 

8 按CTRL+C,拷贝选择的内存块 

9 选择文件/打开选项后选择打开Armadillo(undilloed).exe文件, 

10 将指针放在有4D标记的块上,选择编辑/剪粘板数据/写入选项,出现一个对话框显示写 

入的偏移量为0时,按ok。 

11 保存文件 

12 现在Armadillo 1.8 就已经被完全解密了或者说这个程序已经没有保护了。 

13 不幸的运行程序的话将出现错误,为什么吗?程序的头信息已经指向另一个错误的地址 

了。我们将如何查找代码位置呢?向下看: 

14 现在我们需要w32dasm来攻击它了。 

15 反汇编那个前面保存后的Armadillo(undilloed).exe文件。 

16现在查找程序开始时的位置。经验告诉我所有windows的程序入口都调用GetCommandLineA 

,GetStartupInfoA,GetModuleHandleA,GetVersion和ExitProcess。对于这个程序我们查 

找到GetVersion函数。忽略第一个和第二个查找的结果,因为它们仅是import table的映射 

,第三个也不是一个正确的,这是一个GetVersionEx,它不是我们要找的。第四个才是正确 

的。 

17 现在看一下,对于这个函数,我们可以利用一些或所有的功能。这个最象是windows入口 

点。 

18 下一步将是查找NOP或RET。这个RET的地址为412D3D。这就知道入口值为412D40(译者: 

RET为两个字节)。关闭w32dasm。 

19 现在就可以处理了。打开winhex,载入armadillo1.8x(unarmed).exe文件。 

20 在E0处开始程序头,在108H是入口点(译者:这时是指偏移量) 

21 在108H处我们将要写32—bit入口数据。 

[1] [2] [3] [4] 下一页

  • 上一篇文章:
  • 下一篇文章: