- UID
 - 59749
 
 注册时间2009-1-30
阅读权限8
最后登录1970-1-1
初入江湖 
  
 
 
 
该用户从未签到  
 | 
 
首先要感谢PYG版主以及各位热心的网友一直以来无私的帮助,没有你们的帮助,这个外挂的壳也不知道什么时候能脱掉! 
   如果你和我一样对穿山甲一无所知,那我们先来恶补一下穿山甲的知识,懂的就直接PASS吧。 
如果你手上有穿山甲的软件,请仔细对照了,穿山甲因为种类繁多,脱壳的方法才各不相同的。查壳后显示有Copy MEM II 的就是非标准版啦,其余就是标准版咯,脱穿山甲壳最主要的区别就是这了。 
   双变单的脚本坛子上很多,很容易就下载到了!  
   关于程序的启动参数问题: 
     WIN32 函数的入口都有一个COMMANDLINE 这个就是启动参数,类似DOS 的 int main(char *argv[])。 
  废话不说了,进入主题吧。 
    用ArmFP 查壳后显示为: 
Protection system (Professional) 
!- <Protection Options> 
Debug-Blocker 
Enable Import Table Elimination 
Enable Strategic Code Splicing 
Enable Nanomites Processing 
版本为6.24 。 我们关心的是他的保护方式,知道保护方式后就好办了。 为了方便下像我等超级菜鸟,我就多说几句。 反调试器选项我们不用管,多换几个OD试试,IAT的处理,远地址跳,以及可恶的CC由ARMinline代劳。关于CC,CC是作者在编程的时候加入的标记,刚脱好壳后的程序,一不小心就能找到一个可恶的CC。 
   程序为吉祥天FLYWOOOL.exe 版本为2.41 可以到吉祥天的网站或者其他地方下载,我在文章的最后会附上下载地址 
   直接用OD载入吧,入口为 
00989000 >  60              PUSHAD 
00989001    E8 00000000     CALL FlyWoool.00989006 
00989006    5D              POP EBP 
00989007    50              PUSH EAX 
 
按照前辈们总结的经验,我直接用脚本双变单。 
   接下来下he VirtualProtect断点, SHIFT+F9运行,总共7次后程序就跑起来了,总的感觉是有2次缓冲比较大的过程,其中第6次缓冲时间最长,因此第6次断下后就ALT+F9返回,返回后的代码为: 
01509DA4    8B8D BCD5FFFF   MOV ECX,DWORD PTR SS:[EBP-2A44] ;//*********返回到这一行**********// 
01509DAA    51              PUSH ECX 
01509DAB    8B95 B8D5FFFF   MOV EDX,DWORD PTR SS:[EBP-2A48] 
01509DB1    52              PUSH EDX 
01509DB2    8B85 68D8FFFF   MOV EAX,DWORD PTR SS:[EBP-2798] 
01509DB8    0385 B4D5FFFF   ADD EAX,DWORD PTR SS:[EBP-2A4C] 
CTRL+F查找PUSH 100 并把这个块选项勾上 找到后在段首找到push ebp 
 
01492DF0    55              PUSH EBP 
01492DF1    8BEC            MOV EBP,ESP 
01492DF3    83EC 2C         SUB ESP,2C 
01492DF6    833D C0A45501 0>CMP DWORD PTR DS:[155A4C0],0 
01492DFD    75 59           JNZ SHORT 01492E58 
01492DFF    C745 EC D7C68A6>MOV DWORD PTR SS:[EBP-14],618AC6D7 
01492E06    68 00010000     PUSH 100 
 
将push 100 修改为retn, 之后下CreateThread断点,断下后返回,然后F8 单步,很快就到达OEP了 
01510985    50              PUSH EAX 
01510986    6A 00           PUSH 0 
01510988    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8] 
0151098B    8B51 0C         MOV EDX,DWORD PTR DS:[ECX+C] 
0151098E    52              PUSH EDX 
0151098F    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C] 
01510992    2B45 DC         SUB EAX,DWORD PTR SS:[EBP-24] 
01510995    FFD0            CALL EAX  ;//这就是OEP了 
 
//******************OEP*************// 
004E40AC   .  6A 60         PUSH 60 
004E40AE   .  68 A0F36E00   PUSH FlyWoool.006EF3A0 
004E40B3   .  E8 3C120000   CALL FlyWoool.004E52F4 
004E40B8   .  BF 94000000   MOV EDI,94 
004E40BD   .  8BC7          MOV EAX,EDI 
 
 
 
F7 跟进,OEP就到了,接下来修复的事情都交给ARM 了。 
 修复远地址跳的时候把length 修改为20000, IAT把大小也改为1000 ,为什么是1000,你可以去试试更大的数,那样是浪费CPU,改小了的话可能不够,但是对于一般的程序还是足够的。 
  修复好后就可以脱壳了。  
 
这里我得再多下嘴了: 
   到达OEP后我有很多次都是失败的,为什么会这样,我的感觉是穿山甲的断点检测比较严格。然后导致IAT出错,第一次成功之后我没怎么仔细研究,昨天有网友叫我再脱一次,我在自己机器上怎么搞也不行了, 今天换了个以前的OD,居然可以用了,很奇怪的事情。我的猜测是OD检测断点。  
  当你脱壳后不能运行那你得换个OD了,DS:[0119B3A0]=014DF2B0 ,如果你是这个14DF2B0地址出错的话,恭喜你,我也不下10次遇到了。换个OD试试。 
   修复CC的时候需要注意下,如果直接修复显示为失败的话,那你需要加个启动参数,Arminline 左边有个Edit Command Line,勾上,启动参数为start ,为什么是这个? 吉祥天启动后弹出一个更新的对话框就退出了,如果你在更新的程序里下CreateProcess断的话,你会发现他的参数是FLYWOOOL.EXE start 。 
文中相关的工具下载: 
      吉祥天2.41:http://www.namipan.com/d/JXT.rar/844ec3abdb6c794e5bbe40aca5d52fc3eedadc3fa6063900 
      我脱壳所用的OD :http://www.namipan.com/d/OD.rar/e2c2c8cae978203c02566274701a750d689aadbc0e685800 
      脱壳后,以及修复CC后的:http://www.namipan.com/d/%e5%90%89%e7%a5%a5%e5%a4%a9.rar/3d8fda481a547df0878812f17739b8429d455f7fb04d7a00 
       破解不是本文的重点,各位自己去体会吧,不过这个挂不能爆破,爆破后他的程序在收发TCP包的时候会解析错误,希望有心人能够分享下他的数据包解密报告。直接修改本地DNS,可以把发送到server.jxtwg.com的数据包改到自己想要的地方。 
其余工具皆来自小生我怕怕工具包 
email:[email protected] 
QQ:    156164697 
视频地址:http://www.namipan.com/d/%e5%bd% ... c40336e816b7437a902 
                  //版权没有,还是别到处发了// 
 
[ 本帖最后由 msn1900 于 2009-3-11 20:37 编辑 ] |   
 
 
 
 |