首 页论 坛破解QQ密码领免费QQ秀QQ等级修改盗取QQ教程QQ密码暴力破解QQ空间完整做法免费开所有QQ业务
设为首页
加入收藏
联系我们
您当前的位置:下载者 -> 编程设计 -> 文章内容
栏目导航
· QQ文章 · 综合文章
· 安全文章 · 新闻动态
· 实用技巧 · 入侵检测
· 木马病毒 · 电脑常识
· 编程设计 · 网络技术
相关文章

Armadillo变换IAT的修复
推荐:SSClone非ARP会话劫持原..
用命令行查找ARP病毒母机
聚生网管针对ARP病毒的解决方..
WinRAR与木马结合的新安全隐..
IE用户减少,黑客盯上Safari ..
如何定位进行ARP攻击
用OD脱DEDE的Armadillo 1.xx..
简单脱壳-Armadillo360标准..
Gartner调研报告显示 安全软..
微软杀毒OneCare误报Skype为..
MPlayer sdpplin_parse()函数..
ARP Sinffer用户攻防实例详解..
绝对不可错过WinRAR三种安全..
Microsoft SharePoint 服务器..
警惕ARP病毒侵袭 防范VBS格式..
详细讲解ARP病毒发起欺骗攻击..
绝对不可错过 WinRAR的三种安..
苹果Safari闹出笑话:不得在..
Mozilla高层炮轰苹果利用补丁..

Armadillo 2.5x 加壳的Konvertor 3.13脱壳
发布时间:2008-5-11 17:05:46

来源:安全中国

Armadillo 2.5x 加壳的Konvertor 3.13脱壳 
crack by fwnl 
软件说明:是一个图片、音乐、文字及影音格式文件的转换程序,它总共可以转换135种文件格式,包含25种音乐格式、4种影音格式、105种图片格式及1种文字格式。 
破解工具:trw2000,Import REConstructor v1.4.2+ ,winhex10.45, Peditor 1.7. 

    首先要谢谢hying,leo_cyl,yahoo007,电神等大哥,因为这篇文章中的内容是按他的研究成果来写的. 
特别是yahoo007大哥给了我不少帮助,也要谢谢hying大哥给我的Konvertor 3.12A的输入表. 
    由于最后输入表的问题并没有完美解决,所以还希望各位说说手动修复输入表的方法和技巧,因为这 
方面的资料真是太少了,这也是我写这篇文章的初衷之一吧,谢谢 

一.找oep 
方法一: 
    这种方法是按leo_cyl上次的脱文来找的,原理请看leo_cyl写的Armadillo 2.52的脱文(强烈建义 
脱壳前看看,并搞清楚原理) 

  首先用trw2000载入主程序,下 bpx createprocessa. F5返回程序被中断,下Pmodule返回程序中 
然后Ctrl+↓ 向下看 

0187:00909B06  CALL    `KERNEL32!WaitForDebugEvent`  //看到这个就不远了 
0187:00909B0C  TEST    EAX,EAX 
0187:00909B0E  JZ      NEAR 0090A128 
0187:00909B14  MOV      DWORD [EBP+FFFFFD70],00911468 
............. 
............. 
注意下面的这几句格式,在别的加壳程序中也是差不多的 
0187:00909CB7  MOV      ECX,[EBP+FFFFFE74]      
0187:00909CBD  CMP      DWORD [ECX+0C],C0000005 
0187:00909CC4  JNZ      NEAR 00909E89 
0187:00909CCA  MOV      EDX,[EBP+FFFFFE74] 
0187:00909CD0  CMP      DWORD [EDX+5C],BYTE +00    //下断在这里 
0187:00909CD4  JZ      00909CE2 
0187:00909CD6  MOV      DWORD [EBP+FFFFFD70],009114E8 

于是bpx 909cd0, f5返回,程序中断在00909CD0 下dd edx+18,再按一下F5可看见oep-> 474e06 

方法二: 
  这种方法是按电神大哥说的方法来找的: 

  首先用trw2000载入主程序,bpx VirtualProtect,,在最后一次被中断后,下Pmodule返回程序,然后F10 
单步走,当走到遇上的第2个call时,F8进入,然后F10单步走,直到走到call edi, 
edi的值就是oep-> 474e06 
    注意:开始 bpx virtualprotect 时,其中会中断很多次,这个程序在我机子上是中断 91 次, 
所以我就是从第 91 中断后开始 F10单步走的. 
  
二.初步脱壳 
    这里我是用的hying大哥的方法,因为leo_cyl上次的脱文中的意思我还没有搞明白,那篇文中谈到的几个 
关键点在这个程序中我没找到 :( 

下面的事就是要把hying大哥说的一段代码写入到程序里 
6804000000 push    PAGE_READWRITE 
6800100000 push    MEM_COMMIT 
6800005800 push    580000h  <-用peditor看程序的size of image ,我这里看到是57f000,大一点就写 
6800000000 push    0                                                                580000h 
xxxxxxxxxx call    VirtualAlloc    <-申请内存 
          mov    edi,eax      
          mov    ecx,57e000      <- size of image-1000h= 57e000 
          mov    esi,401000h      <-基址加1000h,有的程序不是这个值 
          rep  movsb 
    载入程序,按一下F10,看看当前的地址,我的是90b7d9, 于是d 90b7d9, Alt+↓ 向下看 
看到 910F64处内存有一片 00 00 00 00 00 

    重新载入程序.bpx VirtualAlloc,Pmodule返回程序中,code on,可是看到 
      Call KERNEL32! VirtualAlloc前的代码,我机子上是 FF1528019100 

    然后,再重新载入程序, d 910F64 再 u 910F64,在内存窗口开始填入680400000068001000006800005800 
6800000000FF1528019100,可看见下面内容, 再A 910f7e 回车写入 mov edi,eax 就可知代码为 89c7 
后面的也是这样,最后可见代码窗口为下面这样: 
0187:00910F64 6804000000      PUSH    DWORD 04 
0187:00910F69 6800100000      PUSH    DWORD 01000 
0187:00910F6E 6800005800      PUSH    DWORD 00580000 
0187:00910F73 6800000000      PUSH    DWORD 00 
0187:00910F78 FF1528019100    CALL    `KERNEL32!VirtualAlloc` 
0187:00910F7E 89C7            MOV      EDI,EAX 
0187:00910F80 B900E05700      MOV      ECX,0057E000 
0187:00910F85 BE00104000      MOV      ESI,00401000 
0187:00910F8A F3A4            REP MOVSB 
0187:00910F8C 0000            ADD      [EAX],AL 

    用Peditor 1.7打开原加壳程序,点FLC,在virtual Address 填入910f64,点do! 可知offset(hex)为3BF64 
    
    用winhex打开原加壳程序,从3BF64开始写入      6804000000680010000068000058006800000000FF152801910089C7B900E05700BE00104000F3A4 
保存后用trw2000打开这个被修改的程序,bpx 474e06 ,中断后 r eip 910f64 ,然后f10单步走,走到00910F7E 
时记下eax的值,我机子上是5560000,继续走到 910f8c时,下命令 w 5560000  5ADE000 c:\ppp.bin 
                      (5560000+57E000=5ADE000) 
然后 r eip 474e06,F5返回,关闭程序 

  这时我们载入原加壳程序,bpx 474e06, f5返回中断,pedump脱出程序test.exe 
用winhex分别打开test.exe和ppp.bin,在test.exe的offset 1000处开始,用ppp.bin替换下面的数据
替换的长度就是ppp.bin的长度,然后保存. 

三.修复输入表 
    这部分对我来说太难了,因为工具并不能完全解决.我的方法是: 
    在Import REConstructor v1.4.2+ 的 Attach to an Active Process 窗口中选取加壳程序的进程,有2个进程选上面的一个,然后在下方的oep处填入00074e06,点IAI AutoSearch,再点Get Imports,然后点Auto Trace,然后点看还有多少地址是NO,剩下的事就是手动找这些函数了. 

hying大哥说过  CreateEventW 
              GetStringTypeA 
如果发现这两个函数连续在一起的话,上面一个该改为GetStringTypeW 

手工修复修入表后,程序应能运行了,好像也就不用注册了,可是注册部分在壳中,壳脱了注册也就不用了 

    这程序的输入表我是手工找到一部分,然后参照hying大哥给我的Konvertor 3.12A的输入表修复的 

    真希望那位能说说手工输复输入表,因为没有谁具体说过,都是很抽象的,向我这样菜鸟根本搞不明白, 
我看了很多资料也只看到,BPX GetVersion ,然后在u 那些未解决的地址,再看看上面或下面,找出正确的函数.但是并不是所有的都能这样解决. 

    因为是初次接触Armadillo的壳,所以中文错误和不足之处可能不少,希望各高手指正,那样就太谢谢了 

[] [打 印] [收 藏]
下一篇文章:Armadillo变换IAT的修复
关于本站 网站帮助 广告合作 下载声明 友情连接 网站地图 联系站长
如果您对本站有任何建议或意见,请联系站长,感谢您对本站一如既往的支持!
Powered by:NewAsp SiteManageSystem Version 2.1 SP1 1030