首页
社区
课程
招聘
Armadillo3.60 加壳的EXE文件脱壳全过程
发表于: 2004-9-8 11:54 27642

Armadillo3.60 加壳的EXE文件脱壳全过程

2004-9-8 11:54
27642
收藏
免费 7
支持
分享
最新回复 (70)
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
26
有时间的话就做个动画,但是我认为写的很详细了,还有做动画的必要吗?我觉得看动画还没有看文章清楚呢
2004-9-22 01:38
0
雪    币: 93908
活跃值: (200199)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
27
支持!
2004-9-22 07:46
0
雪    币: 5690
活跃值: (2537)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
我把自己的操作步骤说一下:
设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。
用OD中载入程序,
1、下bp WaitForDebugEvent,F9运行,中断如下:
77E93A07 k> 55 push ebp   <====中断在此处,删除断点
77E93A08 8BEC mov ebp,esp
77E93A0A 83EC 68 sub esp,68
77E93A0D 56 push esi
77E93A0E FF75 0C push dword ptr ss:[ebp+C]

2、Alt+F9返回,搜索全部常数 FFFFFFF8,来到(004243D6处这里是第一个出现FFFFFFF8的地方):

0042438A > \83BD D0F5FFFF>cmp dword ptr ss:[ebp-A30],0<====参考文章里提到的关键代码
00424391 . 0F8C A9020000 jl NOTEPAD.00424640<====跳转到00424640处,因此在00424640处下断点
00424397 . 8B8D D0F5FFFF mov ecx,dword ptr ss:[ebp-A30]
0042439D . 3B0D E4454500 cmp ecx,dword ptr ds:[4545E4]
.
004243D5 . 48 dec eax
004243D6 . 83C8 F8 or eax,FFFFFFF8<=====搜索来到这里,向上看
004243D9 . 40 inc eax
.
.
0042444E . 8B8D D0F5FFFF mov ecx,dword ptr ss:[ebp-A30]
00424454 . 51 push ecx
00424455 . E8 FF1F0000 call NOTEPAD.00426459
0042445A . 83C4 0C add esp,0C
0042445D . 25 FF000000 and eax,0FF<=========================从这里开始修改
00424462 . 85C0 test eax,eax
00424464 . 0F84 D6010000 je NOTEPAD.00424640

3、先在0042438A处下 硬件执行 断点,F9运行到0042438A处,(这个时候 硬件执行 断点取消吗?)得到ebp-

A30=12EB70,然后修改上述的修改地方修改为:

0042445D FF05 70EB1200 inc dword ptr ds:[12EB70]
00424463 90 nop
00424464 ^ E9 21FFFFFF jmp NOTEPAD.0042438A

把12EB70处置0(试运行到这里修改,还是在对0042438A处下 硬件执行 断点之前改)(或者这个时候这个时候取消硬件执行断点),并在00424640处下断,F9运行,断住

。好了,所有代码都强制解压完成。
我的代码:
00424640   > \E9 E00F0000   jmp NOTEPAD.00425625<==================断在这里用lordpe dump 是不是?
00424645   >  8B0D A0E24400 mov ecx,dword ptr ds:[44E2A0]
0042464B   .  81F1 050000C0 xor ecx,C0000005
00424651   .  398D D8F5FFFF cmp dword ptr ss:[ebp-A28],ecx
00424657   .  0F85 7C040000 jnz NOTEPAD.00424AD9

运行LordPE,有2个关于NOTEPAD的进程,选择第2个,即可完全dump出来了。

4、(3)修复IAT表

因为Armadillo的壳使得ImportREC的"IAT AutoSearch"失效,所以必须确定IAT的RAV以及大小,为此我们用OD载入刚

刚DUMP出来的文件,来确定IAT的RAV以及大小,载入之前先修改入口点为10CC(怎样修改?不太清楚因为这时的文件

只是dump出来的,用peid看还是arm的壳)
2004-9-22 10:29
0
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
29
lucktiger
载入之前先修改入口点为10CC(怎样修改?不太清楚因为这时的文件只是dump出来的,用peid看还是arm的壳)


呵呵,是不是学习学的蒙头转向了,连修改入口点也不会了?^-^
用LORDPE打开刚刚dump出来的文件,直接修改入口点呀 ,你没有修改入口点,你用PEID查的话当然还是有壳了.
2004-9-22 10:41
0
雪    币: 5690
活跃值: (2537)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
谢谢,但我的问题还没有回答完,另外我用lordpe dump时,两个进程都可以dump奇怪。
我的QQ:17247759交流一下
2004-9-22 10:53
0
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
31
不好意思,我的QQ已经很长时间没上过了,估计早被腾讯收走了,有什么问题还是在论坛上说吧,这里的氛围很好的.
2004-9-22 12:16
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
先收好了
2004-9-22 13:47
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
最初由 yuhong 发布
我的文件却没有象这样的断下了,那应该怎样办?

在这里中断若干次,注意堆栈窗口的变化,当出现:

......
........


我就是断不到这里,总是避不开IAT加密,痛苦!
......

0012BF20 00AAC807 返回到 00AAC807 来自 kernel32.GetModuleHandleA
0012BF24 00ABD6C8 ASCII "kernel32.dll"
0012BF28 00ABE67C ASCII "VirtualAlloc"

0012BF20 00AAC824 返回到 00AAC824 来自 kernel32.GetModuleHandleA
0012BF24 00ABD6C8 ASCII "kernel32.dll"
0012BF28 00ABE670 ASCII "VirtualFree"

0012BC98 00A9799B 返回到 00A9799B 来自 kernel32.GetModuleHandleA
0012BC9C 0012BDD4 ASCII "kernel32.dll"
2004-9-22 18:38
0
雪    币: 16
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
34
楼主写的不错,感谢
2004-9-23 15:33
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
附件传错了,附件是1.XX的壳
请上传用3.60版本加的notepad

最初由 popo123456 发布
【目标软件】WINME下的记事本

【加壳方式】Armadillo3.60 CopyMem-ll +Debug-Blocker

【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6F
........
2004-9-23 20:24
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
请重新传3.60加的壳

最初由 popo123456 发布
已经上传了附件
2004-9-23 20:29
0
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
37
呵呵,不是我传错了,而是查壳软件查错了,我加的确实是3.60的,不知道为什么查壳软件说是1.XX的,
2004-9-23 20:48
0
雪    币: 5690
活跃值: (2537)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
什么时候做动画啊
2004-9-23 22:08
0
雪    币: 217
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
Armadillo3.60 那里有下栽
2004-9-24 14:57
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
hehe
2004-9-24 21:32
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
41
把12EB70处置0,去掉所有断点,并在00424640处下断,F9运行,断住。好了,所有代码都强制解压完成。

运行LordPE,有2个关于NOTEPAD的进程,选择第2个,即可完全dump出来了。

(3)修复IAT表

因为Armadillo的壳使得ImportREC的"IAT AutoSearch"失效,所以必须确定IAT的RAV以及大小,为此我们用OD载入刚刚DUMP出来的文件,来确定IAT的RAV以及大小,载入之前先修改入口点为10CC,然后载入:
///////////////////////////////////////////////////////
在那断下dump呢?
我按你的方法dump出来的程序,经修改入口点后用od载入,载入不了
2004-9-25 15:02
0
雪    币: 5690
活跃值: (2537)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
强烈要求做一个动画
2004-9-25 16:48
0
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
43
vrowang123
我按你的方法dump出来的程序,经修改入口点后用od载入,载入不了


这时候你直接运行DUMP文件肯定是不行的,因为还没有修复IAT,另外我估计你也是用OD载入后直接F9运行的,所以会出现错误,应该是用OD载入后,先不要运行,随便找一个API来确定IAT的RAV以及大小,方法见原文.

动画稍侯出来.
2004-9-25 18:54
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
44
最初由 popo123456 发布


这时候你直接运行DUMP文件肯定是不行的,因为还没有修复IAT,另外我估计你也是用OD载入后直接F9运行的,所以会出现错误,应该是用OD载入后,先不要运行,随便找一个API来确定IAT的RAV以及大小,方法见原文.

动画稍侯出来.

我是按你的方法作的阿:)
不过不知道你开始的时候找oep有什么用,你又没在oep处dump
还有好期待你的动画:)
2004-9-25 21:17
0
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
45
不过不知道你开始的时候找oep有什么用,你又没在oep处dump


我建议你认真的读一读,是为了确定IAT
2004-9-25 23:57
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
46
??录像?
有吗?
2004-9-30 16:04
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
这篇脱文避免IAT的部分,对于WIN2K不适合用
这个方法。IAT的加密部分离GetModuleHandleA
很近的!

最初由 yuhong 发布


我就是断不到这里,总是避不开IAT加密,痛苦!
......

........
2004-10-1 19:35
0
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
48
为什么不能用?我这不是脱出来了吗?:)
2004-10-1 20:38
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
前面的一篇脱文,我为什么做不出来?

另外开个OD,然后attach XXX这个进程
                ~~~~~~~~~~
            还有这个进程是父进程还是子进程?
......

然后Alt+F9返回,

00A97995 FF15 C480AB00 call dword ptr ds:[AB80C4]
; kernel32.GetModuleHandleA
00A9799B 8B0D E011AC00 mov ecx,dword ptr ds:[AC11E0]
<====返回到这里
00A979A1 89040E mov dword ptr ds:[esi+ecx],eax
00A979A4 A1 E011AC00 mov eax,dword ptr ds:[AC11E0]
00A979A9 393C06 cmp dword ptr ds:[esi+eax],edi
00A979AC 75 16 jnz short 00A979C4
00A979AE 8D85 B4FEFFFF lea eax,dword ptr ss:[ebp-14C]
00A979B4 50 push eax
00A979B5 FF15 CC80AB00 call dword ptr ds:[AB80CC]
; kernel32.LoadLibraryA
00A979BB 8B0D E011AC00 mov ecx,dword ptr ds:[AC11E0]
00A979C1 89040E mov dword ptr ds:[esi+ecx],eax
00A979C4 A1 E011AC00 mov eax,dword ptr ds:[AC11E0]
00A979C9 393C06 cmp dword ptr ds:[esi+eax],edi
00A979CC 0F84 AD000000 je 00A97A7F
<====Magic Jump,修改为JMP
00A979D2 33C9 xor ecx,ecx
00A979D4 8B03 mov eax,dword ptr ds:[ebx]

修改了上面的Magic Jump后,清除所有断点,Alt+M ,在401000上下
内存访问断点,F9运行,这次中断到了OEP,然后运行ImportREC,
              ~~~~~~~~~~~~~~~~~~~~~~~~
              这里似乎在Win2K似乎无法到达  

选择324这个进程,OEP填:10CC,RVA:72EC,SIZE:244,
然后“Get Imports”,再按“Show Invalid”地址,
剪掉修复抓取文件,程序能够正常运行,至此脱壳完毕
!第一次用OD脱壳,感觉就是爽,和Softice比起来,感觉OD脱壳很方便.

最初由 popo123456 发布
【目标软件】WINME下的记事本

【加壳方式】Armadillo3.60 CopyMem-ll +Debug-Blocker

【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC 1.6F
........
2004-10-4 23:00
0
雪    币: 241
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
50
最初由 limee 发布
前面的一篇脱文,我为什么做不出来?

另外开个OD,然后attach XXX这个进程
~~~~~~~~~~
还有这个进程是父进程还是子进程?


怎么做不出来?遇到异常了?
是子进程.
2004-10-5 07:31
0
游客
登录 | 注册 方可回帖
返回
//