首页
社区
课程
招聘
用Ollydbg手脱Armadillo V3.60加壳的DLL
发表于: 2004-5-27 03:10 20670

用Ollydbg手脱Armadillo V3.60加壳的DLL

fly 活跃值
85
2004-5-27 03:10
20670

            
            
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
        
【调试环境】:WinXP、Ollydbg1.10C、PEiD、LordPE、ImportREC
        
―――――――――――――――――――――――――――――――――
【脱壳过程】:
                  
         
Armadillo加壳DLL的脱壳笔记到现在还没兄弟整理放上来,《加密与解密》中也没有提及。这些天相当郁闷,为了转移一下心境,用了半天时间写下这点东西,其实标准壳的DLL关键是重定位表的问题啦。
        
借用《加密与解密》第2版光盘中附带的EdrLib.dll为例子来演示吧,况且看雪老师还写了EdrTest.exe,脱壳后测试很方便啦。
用Armadillo V3.60的Standard Protection Plus Debug-Blocker方式来给EdrLib.dll加壳,如果选择CopyMem-II方式给DLL加壳,则Armadillo会警告的。看来forgot是看不到双进程的DLL啦,呵呵。
        
―――――――――――――――――――――――――――――――――
一、Magic Jump + DUMP
               
                  
先用LordPE看看加壳后的DLL信息:基址=00400000,入口点=00029A93
        
Ollydbg1.10C调试DLL确实方便,我们不需要在入口插入CC(SoftIce调试DLL),也不需要借助DLL_Loader.exe,所要做的就是在DLL上点右键,选择“Open With Ollydbg”;当然,你要先设置菜单关联,把Ollydbg添加进系统资源管理器里啦。或者你愿意用Ollydbg直接载入DLL也行啦。
        
设置Ollydbg忽略所有的异常选项。老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。
        

00899A93     55                  push ebp//进入OD后停在这
00899A94     8BEC                mov ebp,esp
00899A96     53                  push ebx
00899A97     8B5D 08             mov ebx,dword ptr ss:[ebp+8]
00899A9A     56                  push esi
00899A9B     8B75 0C             mov esi,dword ptr ss:[ebp+C]
00899A9E     57                  push edi
00899A9F     8B7D 10             mov edi,dword ptr ss:[ebp+10]
00899AA2     85F6                test esi,esi
00899AA4     75 09               jnz short EdrLib.00899AAF
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
注意看BP GetModuleHandleA+5 时的堆栈变化:
             
0006BFA0    00A2C807  返回到 00A2C807 来自 kernel32.GetModuleHandleA
0006BFA4    00A3D6C8  ASCII "kernel32.dll"
0006BFA8    00A3E67C  ASCII "VirtualAlloc"
        
0006BFA0    00A2C824  返回到 00A2C824 来自 kernel32.GetModuleHandleA
0006BFA4    00A3D6C8  ASCII "kernel32.dll"
0006BFA8    00A3E670  ASCII "VirtualFree"
        
0006BD18    00A1799B  返回到 00A1799B 来自 kernel32.GetModuleHandleA
0006BD1C    0006BE54  ASCII "kernel32.dll"//可以返回了 ★
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
00A17995     FF15 C480A300       call dword ptr ds:[A380C4] ; kernel32.GetModuleHandleA
00A1799B     8B0D E011A400       mov ecx,dword ptr ds:[A411E0]//返回这里
00A179A1     89040E              mov dword ptr ds:[esi+ecx],eax
00A179A4     A1 E011A400         mov eax,dword ptr ds:[A411E0]
00A179A9     393C06              cmp dword ptr ds:[esi+eax],edi
00A179AC     75 16               jnz short 00A179C4
00A179AE     8D85 B4FEFFFF       lea eax,dword ptr ss:[ebp-14C]
00A179B4     50                  push eax
00A179B5     FF15 CC80A300       call dword ptr ds:[A380CC] ; kernel32.LoadLibraryA
00A179BB     8B0D E011A400       mov ecx,dword ptr ds:[A411E0]
00A179C1     89040E              mov dword ptr ds:[esi+ecx],eax
00A179C4     A1 E011A400         mov eax,dword ptr ds:[A411E0]
00A179C9     393C06              cmp dword ptr ds:[esi+eax],edi
00A179CC     0F84 AD000000       je 00A17A7F//Magic Jump ★   改为JMP!
00A179D2     33C9                xor ecx,ecx
00A179D4     8B03                mov eax,dword ptr ds:[ebx]
00A179D6     3938                cmp dword ptr ds:[eax],edi
00A179D8     74 06               je short 00A179E0
00870000   00001000   EdrLib   00870000 (itself)     PE header
00871000   00003000   EdrLib   00870000  .text //★  这里下 内存访问 断点
00874000   00001000   EdrLib   00870000  .rdata      exports 
00875000   00001000   EdrLib   00870000  .data       data 
008711C9     55                  push ebp//OEP啦 ★
008711CA     8BEC                mov ebp,esp
008711CC     53                  push ebx
008711CD     8B5D 08             mov ebx,dword ptr ss:[ebp+8]
008711D0     56                  push esi
008711D1     8B75 0C             mov esi,dword ptr ss:[ebp+C]
008711D4     57                  push edi
008711D5     8B7D 10             mov edi,dword ptr ss:[ebp+10]
008711D8     85F6                test esi,esi
008711DA     75 09               jnz short EdrLib.008711E5
008711DC     833D 60538700 00    cmp dword ptr ds:[875360],0
008711E3     EB 26               jmp short EdrLib.0087120B
008711E5     83FE 01             cmp esi,1
008711E8     74 05               je short EdrLib.008711EF
008711EA     83FE 02             cmp esi,2
008711ED     75 22               jnz short EdrLib.00871211

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 10
支持
分享
最新回复 (44)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
2004-5-27 03:14
0
雪    币: 270
活跃值: (176)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
3
强!
希望fly多发点dll的脱壳帖子
2004-5-27 04:35
0
雪    币: 319
活跃值: (2459)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
4
学习!!!
2004-5-27 08:06
0
雪    币: 435
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
fly版主发出的东西就是厉害。每次我都能学到好多新方法。多谢多谢!
2004-5-27 10:40
0
雪    币:
能力值: (RANK: )
在线值:
发帖
回帖
粉丝
6
Armadillo dll 的脱文?  难得! 收藏学习 :)
2004-5-27 16:57
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
真是太棒了.希望版主以后可以制作一个全自动的脱壳软件.让我们点鼠标就可以自动把壳脱了.谢谢
2004-5-27 17:05
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
向斑竹学习
2004-5-27 17:19
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
请问斑竹 IsDebug 1.4插件在哪里下载 我用google没搜索到 论坛里也没发现
2004-5-27 20:13
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
按照fly斑竹的方法,我在visual assist net 7 1106的vanet.dll做了实验,完成第一步和第二步以后,我就把dump_.dll代替原来的vanet.dll,可以成功加载,而且没有我上次碰到的错误。(虽然按钮都是灰色的,不可用):(

但是完成第三和第四步以后,就不能加载成功了,打开visual studio7的时候,发现不能load msxml3.dll

还要向fly多请教
2004-5-27 20:16
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我上面发的有点错误,完成第一和第二步的dll根本没有用,vanet.dll根本没有加载:(
2004-5-27 20:23
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
12
最初由 aiww 发布
请问斑竹 IsDebug 1.4插件在哪里下载 我用google没搜索到 论坛里也没发现


OllyDbg各类插件:
http://www.pediy.com/tools/Debuggers/ollydbg/plugin.htm
2004-5-27 20:26
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
13
最初由 rebackhua 发布
按照fly斑竹的方法,我在visual assist net 7 1106的vanet.dll做了实验,完成第一步和第二步以后,我就把dump_.dll代替原来的vanet.dll,可以成功加载,而且没有我上次碰到的错误。(虽然按钮都是灰色的,不可用):(

但是完成第三和第四步以后,就不能加载成功了,打开visual studio7的时候,发现不能load msxml3.dll

还要向fly多请教


曾经看过Visual Assist X的VA_X.dll,壳有远程地址调用,需要修复这些代码

看看是哪里异常出错吧
2004-5-27 20:28
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
曾经看过Visual Assist X的VA_X.dll,壳有远程地址调用,需要修复这些代码


fly斑竹,能否说得详细点,或者有否类似的例子?我是初学的菜鸟,不明白
2004-5-27 20:37
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
15
不太清楚你的vanet.dll是哪方面问题,重定位表修复了?
或者有自校验。

用OD加载一下你脱壳后的dll看看
2004-5-27 20:41
0
雪    币: 221
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gcf
16
大侠就是大侠啊,下载学习中.....
2004-5-27 21:24
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
用OD加载完成修复的DLL,根本加载不了。

我想我在修复的时候,某些步骤出错了。有没有汉化过的lordpe啊?我对一些术语还是不熟
2004-5-27 21:27
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
:D 业已收藏!
2004-5-27 22:34
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
19
呵呵,严重学习!
2004-5-27 22:39
0
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
还是没有搞定:(
2004-5-28 09:48
0
雪    币: 413
活跃值: (752)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
21
勤勤肯肯,效率也高,好同志!
2004-5-28 12:47
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
22
最初由 rebackhua 发布
还是没有搞定:(


你先搞一下文后附件里面的例子吧
2004-5-28 13:54
0
雪    币: 218
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
好文章,赶紧收藏,呵呵!!
2004-5-28 14:36
0
雪    币: 690
活跃值: (1841)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
24
跟着做了一遍,受益非潜,谢谢fly兄
2004-5-29 11:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
请问 fly 兄:

    为何你此篇中附件里的已脱好的 UnPacked-EdrLib.dll 查壳仍
显示为:
Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks
2004-6-4 07:46
0
游客
登录 | 注册 方可回帖
返回
//