首页
社区
课程
招聘
[头痛]-穿山甲
发表于: 2007-3-14 17:34 5752

[头痛]-穿山甲

2007-3-14 17:34
5752
谁有Armadillo 1.xx - 2.xx脱壳脚本,两天了没搞定。
哎!干嘛不都用UPX加壳呢?搞得我头也痛,班也没上好,心情更是不好。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
不用心工作,上班时还想着脱壳
如果我是老总,炒了你
2007-3-14 18:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
贴出来 帮你研究一翻,水平有限哦
2007-3-14 20:06
0
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
4
脱壳机

.
2007-3-15 13:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我也一样..搞了二个星期呢/要不怎么叫穿山甲?
2007-3-15 13:47
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
有脱壳机或脚本的兄弟上传共享一下!
2007-3-15 15:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
此连接有教程---http://bbs.chinapyg.com/viewthread.php?tid=2117&highlight=Armadillo    (转自PYG)
以下转自PYG

【破文标题】Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks 双进程脱壳分析[快速!]
【破文作者】飘云[PYG]
【破解平台】WinXp
【作者邮箱】piaoyun04@163.com
【软件名称】Easy DVD to DivX/VCD/SVCD Converter 3.0.26
【下载地址】http://www.easydvdcdburner.com/d ... DVDConverterPro.exe
【破解工具】PEID0.94、OD、ImportREC 1.6、LordPE
【破解目的】学习脱壳。
【破解声明】我乃小菜鸟一只,偶得一点心得,愿与大家分享:)
【软件介绍】Easy DVD to DivX/VCD/SVCD Converter 是一款DVD复制、RIP和转换工具。
只需要点几下,你可以把DVD复制到你的硬盘上,并保存为DivX (MPEG4)/VCD (MPEG1)/SVCD (MPEG2)格式。
【动画教程】http://bbs.chinapyg.com/viewthre ... &extra=page%3D1
【脱壳过程】PEID 探测为 Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks

OD载入程序来到这里:
0050F000 Ea>  60                    pushad
0050F001      E8 00000000           call EasyDVDC.0050F006
0050F006      5D                    pop ebp
0050F007      50                    push eax
0050F008      51                    push ecx
0050F009      0FCA                  bswap edx
0050F00B      F7D2                  not edx
0050F00D      9C                    pushfd
0050F00E      F7D2                  not edx
0050F010      0FCA                  bswap edx
0050F012      EB 0F                 jmp short EasyDVDC.0050F023
0050F014      B9 EB0FB8EB           mov ecx,EBB80FEB
0050F019      07                    pop es
0050F01A      B9 EB0F90EB           mov ecx,EB900FEB
0050F01F      08FD                  or ch,bh
0050F021      EB 0B                 jmp short EasyDVDC.0050F02E
0050F023      F2:                   prefix repne:
0050F024    ^ EB F5                 jmp short EasyDVDC.0050F01B
0050F026    ^ EB F6                 jmp short EasyDVDC.0050F01E
0050F028      F2:                   prefix repne:
0050F029      EB 08                 jmp short EasyDVDC.0050F033
0050F02B      FD                    std
0050F02C    ^ EB E9                 jmp short EasyDVDC.0050F017
0050F02E      F3:                   prefix rep:
0050F02F    ^ EB E4                 jmp short EasyDVDC.0050F015
0050F031      FC                    cld
0050F032    - E9 9D0FC98B           jmp 8C19FFD4
0050F037      CA F7D1               retf 0D1F7

Alt+E  

找到 "EasyDVDConverter" 一栏-右键-查看名称,然后找到 "WriteProcessMemory"-右键-"在反汇编窗口中跟随导入函数"

7C80220F ke>  8BFF                  mov edi,edi
7C802211      55                    push ebp
7C802212      8BEC                  mov ebp,esp   //在这里下断点
7C802214      51                    push ecx
7C802215      51                    push ecx
7C802216      8B45 0C               mov eax,dword ptr ss:[ebp+C]
7C802219      53                    push ebx
7C80221A      8B5D 14               mov ebx,dword ptr ss:[ebp+14]
7C80221D      56                    push esi
7C80221E      8B35 B812807C         mov esi,dword ptr ds:[<&ntdll.NtPr>; ntdll.ZwProtectVirtualMemory
7C802224      57                    push edi
7C802225      8B7D 08               mov edi,dword ptr ss:[ebp+8]
7C802228      8945 F8               mov dword ptr ss:[ebp-8],eax
7C80222B      8D45 14               lea eax,dword ptr ss:[ebp+14]
7C80222E      50                    push eax
7C80222F      6A 40                 push 40

在 7C802211 处F2下断后,shift+f9运行程序~~ 然后alt+f9返回
返回到这里:
004EE8A5     /70 07                 jo short EasyDVDC.004EE8AE
004EE8A7     |7C 03                 jl short EasyDVDC.004EE8AC
004EE8A9     |EB 05                 jmp short EasyDVDC.004EE8B0
004EE8AB     |E8 74FBEBF9           call FA3AE424
004EE8B0      EB 5F                 jmp short EasyDVDC.004EE911
004EE8B2      8D55 FC               lea edx,dword ptr ss:[ebp-4]
004EE8B5      52                    push edx
004EE8B6      6A 02                 push 2
004EE8B8      68 345E5200           push EasyDVDC.00525E34
004EE8BD      8B45 10               mov eax,dword ptr ss:[ebp+10]
004EE8C0      50                    push eax
004EE8C1      8B4D 08               mov ecx,dword ptr ss:[ebp+8]
004EE8C4      8B11                  mov edx,dword ptr ds:[ecx]
004EE8C6      52                    push edx
004EE8C7      FF15 10F15100         call dword ptr ds:[<&KERNEL32.Writ>; kernel32.WriteProcessMemory
004EE8CD      50                    push eax
004EE8CE      F7D0                  not eax

Ctrl+a分析代码:
变成下面的样子:
004EE8A5     . /70 07               jo short EasyDVDC.004EE8AE
004EE8A7     . |7C 03               jl short EasyDVDC.004EE8AC
004EE8A9     > |EB 05               jmp short EasyDVDC.004EE8B0
004EE8AB       |E8                  db E8
004EE8AC     >^|74 FB               je short EasyDVDC.004EE8A9
004EE8AE     >^\EB F9               jmp short EasyDVDC.004EE8A9
004EE8B0     >  EB 5F               jmp short EasyDVDC.004EE911
004EE8B2     >  8D55 FC             lea edx,dword ptr ss:[ebp-4]
004EE8B5     .  52                  push edx                           ; /pBytesWritten
004EE8B6     .  6A 02               push 2                             ; |BytesToWrite = 2
004EE8B8     .  68 345E5200         push EasyDVDC.00525E34             ; |Buffer = EasyDVDC.00525E34 //★★就是这里了,
                                                                          右键-"数据窗口跟随"-"立即数"
004EE8BD     .  8B45 10             mov eax,dword ptr ss:[ebp+10]      ; |
004EE8C0     .  50                  push eax                           ; |Address
004EE8C1     .  8B4D 08             mov ecx,dword ptr ss:[ebp+8]       ; |
004EE8C4     .  8B11                mov edx,dword ptr ds:[ecx]         ; |
004EE8C6     .  52                  push edx                           ; |hProcess
004EE8C7     .  FF15 10F15100       call dword ptr ds:[<&KERNEL32.Writ>; \WriteProcessMemory
004EE8CD     .  50                  push eax
004EE8CE     .  F7D0                not eax

左下角显示如下:
00525E34  60 E8 00 00 00 00 00 00  `?.....         //★把这里"60 E8" 改为 "EB FE"
00525E3C  00 00 00 00 00 00 00 00  ........

改好之后按F9中断在此:
7C802212      8BEC                  mov ebp,esp     //在这里取消断点
7C802214      51                    push ecx
7C802215      51                    push ecx
7C802216      8B45 0C               mov eax,dword ptr ss:[ebp+C]
7C802219      53                    push ebx
7C80221A      8B5D 14               mov ebx,dword ptr ss:[ebp+14]
7C80221D      56                    push esi
7C80221E      8B35 B812807C         mov esi,dword ptr ds:[<&ntdll.NtPr>; ntdll.ZwProtectVirtualMemory
7C802224      57                    push edi
7C802225      8B7D 08               mov edi,dword ptr ss:[ebp+8]

然后再按一次F9,ok~~ 现在命令行下断 bp WaitForDebugEvent  应该立即中断在这个API上:

7C85A268 ke>  8BFF                  mov edi,edi     //中断在此~
7C85A26A      55                    push ebp
7C85A26B      8BEC                  mov ebp,esp
7C85A26D      83EC 68               sub esp,68
7C85A270      56                    push esi
7C85A271      FF75 0C               push dword ptr ss:[ebp+C]
7C85A274      8D45 F8               lea eax,dword ptr ss:[ebp-8]
7C85A277      50                    push eax
7C85A278      E8 F381FAFF           call kernel32.7C802470

Alt+F9返回:

004EA3DF     .  85C0                test eax,eax    //返回到这里
004EA3E1     .  0F84 2B270000       je EasyDVDC.004ECB12
004EA3E7     .  8B85 FCFDFFFF       mov eax,dword ptr ss:[ebp-204]
004EA3ED     .  25 FF000000         and eax,0FF

好了,现在我们来查看子进程的ID  "文件"-"附加"   现在你应该看到了2个名称为EasyDVDConverter的东西,一个红色的,一个黑色的

未命名的窗口,项目 23
进程=000009B8   //父进程ID   这里每次都是不同的哦~~~~    如现在是3C8了~~ 嘿嘿
名称=EasyDVDConverter
路径=C:\Program Files\EasyDVDConverter\EasyDVDConverter.exe  //这里红色显示

未命名的窗口,项目 25
进程=00000C44   //子进程ID,记住这个C44   ★★ 这里每次都是不同的哦~~~~  ★★   现在是CF8
名称=EasyDVDConverter
路径=C:\Program Files\EasyDVDConverter\EasyDVDConverter.exe //这里黑色显示

得到以上信息之后.我们就来改代码,分离子进程~   改成如下的样子:

004EA3DF        68 440C0000         push 0C44
004EA3E4        E8 A8FF367C         Call DebugActiveProcessStop
004EA3E9        90                  nop
004EA3EA        90                  nop
004EA3EB        90                  nop
004EA3EC        90                  nop

接下来F8单步到第一个nop处,即004EA3E9处
至此 子.父进程已没有任何联系~

打开另外一个OD-"文件"-"附加"-子进程ID 来到这里:

7C921231      C3                    retn       //停在这里
7C921232      8BFF                  mov edi,edi
7C921234      90                    nop
7C921235      90                    nop
7C921236      90                    nop
7C921237      90                    nop
7C921238      90                    nop
7C921239 nt>  CC                    int3

ALT+F9返回:
0050F000 Ea>- EB FE                 jmp short EasyDVDC.<模块入口点>
0050F002      0000                  add byte ptr ds:[eax],al
0050F004      0000                  add byte ptr ds:[eax],al
0050F006      5D                    pop ebp

记得前面我们 将 "60 E8" 改成了 "EB FE" 现在我们要将之改回来   "EB FE" - "60 E8" (在0050F000 这行上点右键-"二进制"-"编辑")

改好之后如下所示:
0050F000 Ea>  60                    pushad
0050F001      E8 00000000           call EasyDVDC.0050F006

现在 shfif+F9运行程序,只到出现Nag窗口
命令行下断 bp CreateThread ,然后点击 "OK"

立即中断在此:
7C81082F ke>  8BFF                  mov edi,edi
7C810831      55                    push ebp
7C810832      8BEC                  mov ebp,esp
7C810834      FF75 1C               push dword ptr ss:[ebp+1C]
7C810837      FF75 18               push dword ptr ss:[ebp+18]
7C81083A      FF75 14               push dword ptr ss:[ebp+14]
7C81083D      FF75 10               push dword ptr ss:[ebp+10]
7C810840      FF75 0C               push dword ptr ss:[ebp+C]
7C810843      FF75 08               push dword ptr ss:[ebp+8]
7C810846      6A FF                 push -1
7C810848      E8 D9FDFFFF           call kernel32.CreateRemoteThread
7C81084D      5D                    pop ebp
7C81084E      C2 1800               retn 18

按ctrl+f9 和 f7 来到:
00BEA9F2      5F                    pop edi
00BEA9F3      5E                    pop esi
00BEA9F4      C9                    leave
00BEA9F5      C3                    retn

继续ctrl+f9 和 f7 来到:
00BFC743      59                    pop ecx                            ; kernel32.7C8107FD
00BFC744      BF 10B3C000           mov edi,0C0B310
00BFC749      8BCF                  mov ecx,edi
00BFC74B      E8 05B9FDFF           call 00BD8055
00BFC750      84C0                  test al,al
00BFC752      75 09                 jnz short 00BFC75D

现在重要了~~~~  注意了!!!
拖动滚动条,向下面找第二个call ecx然后下断 (当然你不肯定的时候,可以将2个call ecx 都下断):
00BFC7B5      3350 1C               xor edx,dword ptr ds:[eax+1C]
00BFC7B8      2BCA                  sub ecx,edx
00BFC7BA      FFD1                  call ecx        //★★这里F2下断★★

f9一次之后立即中断,F7步入~~~:

00401C08      68 6CBA4300           push EasyDVDC.0043BA6C      //Year! Oep~~~~
00401C0D      E8 F0FFFFFF           call EasyDVDC.00401C02
00401C12      0000                  add byte ptr ds:[eax],al
00401C14      50                    push eax
00401C15      0000                  add byte ptr ds:[eax],al
00401C17      0030                  add byte ptr ds:[eax],dh
00401C19      0000                  add byte ptr ds:[eax],al

打开 lordPE 选中子进程-右键-"完整转存" 保存为dumped.exe

运行 Import REC 选中子进程-OEP:00001C08 - "IAT AutoSearch"    CUT无效指针~~

修复文件~~ ok 试运行程序  晕,提示未找到 "ArmAccess.dll" (这个是arm壳中自带的)  我们复制一个放到程序中运行,看看~~
ok,一切正常,没有未注册提示了~~~~

PEID探测-- Microsoft Visual Basic 5.0 / 6.0

www.chinapyg.com 版权所有!

收工!

【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
2007-3-15 16:53
0
雪    币: 214
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
2楼朋友在深圳哪里,我在凤岗。
参考大侠们的文章今天又搞了一天,有点收获,但还是没脱成。
DilloDumper,dilloDIE 1。6脱壳机都未脱成。

---阴阳两全好相貌---
我恨死穿山甲了
2007-3-15 17:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 wangjun 发布
2楼朋友在深圳哪里,我在凤岗。
参考大侠们的文章今天又搞了一天,有点收获,但还是没脱成。
DilloDumper,dilloDIE 1。6脱壳机都未脱成。

---阴阳两全好相貌---
........


兄台,你恨死穿山甲的同时,穿山甲对面的人也在恨你。
2007-3-17 09:48
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
10
最初由 wangjun 发布
2楼朋友在深圳哪里,我在凤岗。
参考大侠们的文章今天又搞了一天,有点收获,但还是没脱成。
DilloDumper,dilloDIE 1。6脱壳机都未脱成。

---阴阳两全好相貌---
........


凤岗不是在东莞么,
深圳这里好像只有龙岗~~~~~~`
2007-3-17 10:45
0
雪    币: 201
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
看起来简单,用起来头疼啊
2007-3-17 11:28
0
雪    币: 214
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
凤岗不是在东莞么,
深圳这里好像只有龙岗~~~~~~`

晕了。我几时说我在深圳。以前在深圳沙头角现在在东莞。
你还没说你在哪呢?
2007-3-19 08:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
有同样的感觉,我碰到好几个软件都是加了armadillo的壳,看来得埋头苦学了~~~跟不上时代了
2007-3-20 13:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
现代的壳子越来越难破了 不知道要花多少精力才能......真辛苦啊
2007-3-20 15:46
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
穿山甲有脱壳动画 非常详细的  每个版本的动画都有 我帖不上来 要的话加我QQ617416
2007-3-29 17:49
0
游客
登录 | 注册 方可回帖
返回
//