首页
社区
课程
招聘
[讨论]手脱ARM加的DLL壳过程,请高手指正!
发表于: 2005-4-4 13:04 4886

[讨论]手脱ARM加的DLL壳过程,请高手指正!

2005-4-4 13:04
4886
PE查壳为  Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks [Overlay]
我便根据FLY老大的3.60ARM的DLL壳教程开始!
OD载入程序:
008FAA93 M>/$  55                push ebp
008FAA94   |.  8BEC              mov ebp,esp
008FAA96   |.  53                push ebx
008FAA97   |.  8B5D 08           mov ebx,dword ptr ss:[ebp+8]
008FAA9A   |.  56                push esi
008FAA9B   |.  8B75 0C           mov esi,dword ptr ss:[ebp+C]
008FAA9E   |.  57                push edi
008FAA9F   |.  8B7D 10           mov edi,dword ptr ss:[ebp+10]
008FAAA2   |.  85F6              test esi,esi

我下了 BP GetModuleHandleA+5  命令然后在 在试运行几次后找到了Magic Jump了 (详细的过程我就不写了FLY老大N年前就写了)
00AA799B     8B0D E011AD00       mov ecx,dword ptr ds:[AD11E0]
00AA79A1     89040E              mov dword ptr ds:[esi+ecx],eax
00AA79A4     A1 E011AD00         mov eax,dword ptr ds:[AD11E0]
00AA79A9     393C06              cmp dword ptr ds:[esi+eax],edi
00AA79AC     75 16               jnz short 00AA79C4
00AA79AE     8D85 B4FEFFFF       lea eax,dword ptr ss:[ebp-14C]
00AA79B4     50                  push eax
00AA79B5     FF15 CC80AC00       call dword ptr ds:[AC80CC]                     ; kernel32.LoadLibraryA
00AA79BB     8B0D E011AD00       mov ecx,dword ptr ds:[AD11E0]
00AA79C1     89040E              mov dword ptr ds:[esi+ecx],eax
00AA79C4     A1 E011AD00         mov eax,dword ptr ds:[AD11E0]
00AA79C9     393C06              cmp dword ptr ds:[esi+eax],edi
00AA79CC     0F84 AD000000       je 00AA7A7F    ******** 我改成了JMP 00AA7A7F
00AA79D2     33C9                xor ecx,ecx
00AA79D4     8B03                mov eax,dword ptr ds:[ebx]
00AA79D6     3938                cmp dword ptr ds:[eax],edi
00AA79D8     74 06               je short 00AA79E0
00AA79DA     41                  inc ecx
00AA79DB     83C0 0C             add eax,0C
00AA79DE   ^ EB F6               jmp short 00AA79D6

后Alt+M  在008d8000   m2server.dll  .txet  code  上下内存访问断点F9运行后就到了程序的入口
008DB980   /$  55                push ebp
008DB981   |.  8BEC              mov ebp,esp
008DB983   |.  8B45 0C           mov eax,dword ptr ss:[ebp+C]
008DB986   |.  50                push eax                                       ; /Arg3
008DB987   |.  8B4D 08           mov ecx,dword ptr ss:[ebp+8]                   ; |
008DB98A   |.  51                push ecx                                       ; |Arg2
008DB98B   |.  8B55 10           mov edx,dword ptr ss:[ebp+10]                  ; |
008DB98E   |.  83F2 FF           xor edx,FFFFFFFF                               ; |
008DB991   |.  52                push edx                                       ; |Arg1
008DB992   |.  E8 B37E0100       call M2Server.008F384A                         ; \M2Server.008F384A
008DB997   |.  83C4 0C           add esp,0C
008DB99A   |.  83F0 FF           xor eax,FFFFFFFF
008DB99D   |.  5D                pop ebp
008DB99E   \.  C3                retn

我就用LordPE  完全脱壳了 下来就是调用API 了
我调用了 00AC4A20     FF15 C480AC00       call dword ptr ds:[AC80C4]     ; kernel32.GetModuleHandleA
确定了
RVA=00004000、大小=21B 得到输入表,剪切掉垃圾指针,改OEP=0006B980 然后我就修复了啊!下了就是  重定位表FLY老大的办法很奏效我很快的就找到了具体的位置

00AC2332     87FA                xchg edx,edi
00AC2334     90                  nop
00AC2335     87FA                xchg edx,edi
00AC2337     C705 DCDBAC00 E4E4A>mov dword ptr ds:[ACDBDC],0ACE4E4
00AC2341     A1 9C55AD00         mov eax,dword ptr ds:[AD559C]
00AC2346     8B00                mov eax,dword ptr ds:[eax]//  RVA=00006200
00AC2348     8985 48ECFFFF       mov dword ptr ss:[ebp-13B8],eax
00AC234E     A1 9C55AD00         mov eax,dword ptr ds:[AD559C]
00AC2353     83C0 04             add eax,4
00AC2356     A3 9C55AD00         mov dword ptr ds:[AD559C],eax
00AC235B     A1 9C55AD00         mov eax,dword ptr ds:[AD559C]
00AC2360     8B00                mov eax,dword ptr ds:[eax]  //  大小为 00005F34
00AC2362     8985 7CECFFFF       mov dword ptr ss:[ebp-1384],eax
00AC2368     A1 9C55AD00         mov eax,dword ptr ds:[AD559C]
00AC236D     83C0 04             add eax,4
00AC2370     A3 9C55AD00         mov dword ptr ds:[AD559C],eax
00AC2375     83BD 48ECFFFF 00    cmp dword ptr ss:[ebp-13B8],0
00AC237C     74 6F               je short 00AC23ED
00AC237E     83BD 7CECFFFF 00    cmp dword ptr ss:[ebp-1384],0
00AC2385     74 66               je short 00AC23ED
00AC2387     8B85 0CEBFFFF       mov eax,dword ptr ss:[ebp-14F4]
00AC238D     8B8D 1CEBFFFF       mov ecx,dword ptr ss:[ebp-14E4]
00AC2393     3B48 34             cmp ecx,dword ptr ds:[eax+34]          ; LOADDLL.00400000
到这里总算完了,我没有做优化,心想先把脱壳搞熟悉了!可是放进后替换了 原来的 DLL  程序怎么也不正常!我试了几次都是一样!所以又只有 麻烦大家了! 谢谢各位老大了请给点指点!

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
晕!自己顶下!今天没有人值班吗?
2005-4-4 14:29
0
雪    币: 169
活跃值: (707)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
我也为这壳烦恼中,讨论一下?QQ:316775824
2005-4-5 05:08
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
怎么找的啊!?
重定位表FLY老大的办法很奏效我很快的就找到了具体的位置
2005-4-5 08:25
0
雪    币: 312
活跃值: (755)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
limin520:
我下了 BP GetModuleHandleA 命令F9几次不能到0F84×××Magic Jump口,不知那里错了,你能说说吗?
2005-4-5 20:16
0
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
论坛老大们还没有结果吗?
我到底那里出错了啊?
2005-4-7 18:04
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
7
可能别人对这个不感兴趣
2005-4-7 19:06
0
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
啊 !郁闷完了!!搞了好久了我在研究下!
人只能靠自己!
2005-4-8 09:48
0
雪    币: 4833
活跃值: (2218)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
我见过一个DLL脱壳情况是:
  找到了Magic Jump,也下了.CODE的内存断点,但从Magic Jump到OEP的过程中,却产生了一个异常。无法躲避。用以前别人讨论过的修复Magic Jump的方法也无法躲避。
2005-4-8 11:57
0
雪    币: 218
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哎!~DLL  就是不好搞啊 
2005-4-8 12:24
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
第一步我已经完全dump出来了

接下来不知道怎么搞输入表

那个金蝉脱壳也不是很懂。不知道能否详细讲述一下呢
2005-4-21 23:07
0
游客
登录 | 注册 方可回帖
返回
//