免费杀毒软件,全面病毒解决方案

投递文章  投稿指南 金山毒霸非官方通告:
搜索: 您的位置毒霸首页>毒霸资讯>黑客动态>阅读资讯:Armadillo V2_xx标准加壳方式的脱壳--Virtual Personality4.0

Armadillo V2_xx标准加壳方式的脱壳--Virtual Personality4.0

2008-05-13 02:35:06   来源:www.anqn.com   作者:   【 评论:0

  

  ※软件限制※:采用了ARMADILLO的KEY加密,启动要你输入KEY,还有30天试用期,所以,如果脱了壳,上述现象都将没有了.现在开始脱壳历程.!!

  

  ※破解工具※:DriverSuite2.7中的softice4.2.7、PEiD、LordPE

  

  ※调试平台※:Windows XP

  

  Armadillo是当今猛壳之一,加壳方式有两种,一种是标准方式(Standard Protections Only)加壳,

  另一种是CopyMem-II+Debug-Blocker的加壳,其标准加壳方式相对来说则容易的多.用COPYMEMII的一般可用DILLODUMP脱,而用标准加壳用DILLODUMP是脱不了的。

  

  首先确信你已经牢固的理解了PE文件格式,因为那是重建PE映象的基础,并且清楚Armadillo保护的理论和方法。

  

  理论:首先一点是Armadillo是通过类似于调试的方法来运行程序的.新版本Armadillo脱壳的一个难点是它的代码段是分页解密的,我估计它的做法是将代码段锁定,即将其属性设为不可读、写、执行,当被执行到时会产生一个页面保护错误,而调试程序就会捕获这个错误,将对应的页面解锁并解密,然后返回执行.Armadillo 2.xx只是附加了一些新特性,使得逆向工程变得更有趣.Armadillo调试由它自身保护的软件,这一点使得我们这些crackers在跟踪调试目标时,遇到了很大的困难.

  

  ※开始吧※

  PEiD侦测知其用Armadillo 1.xx - 2.xx加壳,Virtual Personality很狡猾,在运行时,它有两个进程,一开始我还以为是CopyMem-II方式加壳,其实是标准方式加壳.

  

  [一],DUMP出程序

  标准的流程如下, 下bpx VirtualProtect去找OEP一旦softice中断了,检查softice是否在

  Virtual Personality的领空,如果不在则按F5直到softice在Virtual Personality 的领空中断.

  然后按F12辅之以F10跟踪过去一些指令,直到你看到一个"call EDI"指令,停在那儿,然后写下EDI的值.那就是OEP.

  

  具体如下:

  运行softice4.2.7,开启Virtual Personality直到出现注册框,ctrl+D调出softice,

  在按OK前BPX VirtualProtect.到中断38次时程序运行了,重新来一遍,当在37次出现中断

  在VirtualProtect时停下,BC *清除所有断点,然后按F10单步返回到主程序.

  001B:005FA207 83C404 ADD ESP,04

  001B:005FA20A 8945FC MOV [EBP-04],EAX

  001B:005FA20D 837DECFF CMP DWORD PTR [EBP-14],-01

  001B:005FA211 740B JZ 005FA21E

  001B:005FA213 8B55EC MOV EDX,[EBP-14]

  001B:005FA216 891518C06200 MOV [0062C018],EDX

  001B:005FA21C EB10 JMP 005FA22E

  001B:005FA21E 837DFC01 CMP DWORD PTR [EBP-04],01

  001B:005FA222 740A JZ 005FA22E

  001B:005FA224 C70518C0620001000000MOV DWORD PTR [0062C018],00000001

  001B:005FA22E 837DB000 CMP DWORD PTR [EBP-50],00

  001B:005FA232 740A JZ 005FA23E

  001B:005FA234 8B45B0 MOV EAX,[EBP-50]

  001B:005FA237 50 PUSH EAX

  001B:005FA238 FF1504626200 CALL [USER32!DestroyWindow]

  001B:005FA23E 8B45FC MOV EAX,[EBP-04]

  001B:005FA241 8BE5 MOV ESP,EBP

  001B:005FA243 5D POP EBP

  001B:005FA244 C3 RET

  再耐心地用F10单步走,因为有一堆的JMP,JNZ,JO等,用不了多久的就可来到这:

  001B:005FB6F8 7511 JNZ 005FB70B

  001B:005FB6FA 6878BC6200 PUSH 0062BC78

  001B:005FB6FF FF159CBC6200 CALL [0062BC9C] ,这个CALL用F8跟进

  001B:005FB705 83C404 ADD ESP,04

  在005FB6FF这个CALL用F8跟进,然后继续F10,几次后就来到这:

  001B:00F8EEE9 334824 XOR ECX,[EAX+24]

  001B:00F8EEEC 334808 XOR ECX,[EAX+08]

  001B:00F8EEEF 2BF9 SUB EDI,ECX

  001B:00F8EEF1 FFD7 CALL EDI =====>EDI=0041657E

  看到最后这个CALL EDI吗,0041657E就是程序的OEP了,我们F8跟进:

  001B:0041657E 55 PUSH EBP

  001B:0041657F 8BEC MOV EBP,ESP

  001B:00416581 6AFF PUSH FF

  001B:00416583 68B0794400 PUSH 004479B0

  001B:00416588 6820B54100 PUSH 0041B520

  001B:0041658D 64A100000000 MOV EAX,FS:[00000000]

  001B:00416593 50 PUSH EAX

  001B:00416594 64892500000000 MOV FS:[00000000],ESP



Tags:  
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 法律声明 - RSS订阅 - 网站地图 - 返回顶部 -