首页
社区
课程
招聘
[求助]Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks脱壳
发表于: 2007-9-14 08:54 5307

[求助]Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks脱壳

2007-9-14 08:54
5307
按照刹那恍惚的用OD手脱 Armadillo v4.40 DLL壳
1 侦壳:用PEiD查壳 Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks

这里如何判断Arm的版本呢?记得FLY大狭说过Armadillo V4.0新增的反跟踪手段:

OllyDbg在处理调式包含格式串的消息时存在问题,被跟踪的应用程序可以使OllyDbg崩溃,或可能以进程权限执行任意指令。OutputDebugString函数可发送字符串到调试器上,然后OllyDbg会在底端显示相关状态消息,但是如果包含格式串消息,就可能使OllyDbg崩溃。Armadillo以前的版本没有此种Anti,自V4.0始才有。

有他这句话我们就可以做如下判断了:

OD 载入

下断点 HE OutputDebugStringA

Shift+F9 运行,中断下来。看堆栈:

0006EA98   00B8580F  /CALL 到 OutputDebugStringA 来自 00B85809
0006EA9C   0006F410  \String = "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s"

出现这个说明这个DLL是经过Armadillo 4.X压缩过

2 判断进程:DLL文件加壳应该是不可以双进程,所以这里是单进程方式。
清除断点后OD 重新载入

008AFE97 >/$  55            PUSH EBP                                 ;  停在这里
008AFE98  |.  8BEC          MOV EBP,ESP
008AFE9A  |.  53            PUSH EBX
008AFE9B  |.  8B5D 08       MOV EBX,DWORD PTR SS:[EBP+8]
008AFE9E  |.  56            PUSH ESI

下断点 BP GetModuleHandleA+5,Shift+F9 运行中断后,注意看堆栈:

这里用 BP API+5 是为了躲过壳检查是否下过 API 断点,相关资料看雪论坛上面可以找到。
0006ED60  /0006ED7C
0006ED64  |77F45BD8  返回到 77F45BD8 来自 kernel32.GetModuleHandleA
0006ED68  |77F4501C  ASCII "KERNEL32.DLL"

00069364  /0006EAAC
00069368  |00B86DF3  返回到 00B86DF3 来自 kernel32.GetModuleHandleA
0006936C  |00B9BC1C  ASCII "kernel32.dll"
00069370  |00B9CEC4  ASCII "VirtualAlloc"

00069364  /0006EAAC
00069368  |00B86E10  返回到 00B86E10 来自 kernel32.GetModuleHandleA
0006936C  |00B9BC1C  ASCII "kernel32.dll"
00069370  |00B9CEB8  ASCII "VirtualFree"

000690C8  /00069368
000690CC  |00B75CE1  返回到 00B75CE1 来自 kernel32.GetModuleHandleA
000690D0  |0006921C  ASCII "kernel32.dll"                              ; ★ 注意!在这里清除断点后Alt+F9返回程序

这里说下我判断返回的经验,我的经验是一般出现下面这两句就快到返回点了

00069364  /0006EAAC
00069368  |00B86DF3  返回到 00B86DF3 来自 kernel32.GetModuleHandleA
0006936C  |00B9BC1C  ASCII "kernel32.dll"
00069370  |00B9CEC4  ASCII "VirtualAlloc"                              ; ★  注意这句

00069364  /0006EAAC
00069368  |00B86E10  返回到 00B86E10 来自 kernel32.GetModuleHandleA
0006936C  |00B9BC1C  ASCII "kernel32.dll"
00069370  |00B9CEB8  ASCII "VirtualFree"                               ; ★  注意这句

00B75CE1    8B0D AC40BA00   MOV ECX,DWORD PTR DS:[BA40AC]            ; 返回到这里
00B75CE7    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00B75CEA    A1 AC40BA00     MOV EAX,DWORD PTR DS:[BA40AC]
00B75CEF    391C06          CMP DWORD PTR DS:[ESI+EAX],EBX
00B75CF2    75 16           JNZ SHORT 00B75D0A
00B75CF4    8D85 B4FEFFFF   LEA EAX,DWORD PTR SS:[EBP-14C]
00B75CFA    50              PUSH EAX
00B75CFB    FF15 BC62B900   CALL DWORD PTR DS:[B962BC]               ; kernel32.LoadLibraryA
00B75D01    8B0D AC40BA00   MOV ECX,DWORD PTR DS:[BA40AC]
00B75D07    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00B75D0A    A1 AC40BA00     MOV EAX,DWORD PTR DS:[BA40AC]
00B75D0F    391C06          CMP DWORD PTR DS:[ESI+EAX],EBX
00B75D12    0F84 2F010000   JE 00B75E47                              ; Magic Jump 改 JE 为 JMP 避开 IAT 加密
00B75D18    33C9            XOR ECX,ECX
00B75D1A    8B07            MOV EAX,DWORD PTR DS:[EDI]
00B75D1C    3918            CMP DWORD PTR DS:[EAX],EBX
00B75D1E    74 06           JE SHORT 00B75D26
00B75D20    41              INC ECX
00B75D21    83C0 0C         ADD EAX,0C
00B75D24  ^ EB F6           JMP SHORT 00B75D1C

把 00B75D12 这句的 JE 00B75E47 改成 JMP 00B75E47
2 获得重定位信息

下断点 bp GetTickCount,Shift+F9 运行中断后,注意看堆栈:

00069370   00B8C009  /CALL 到 GetTickCount 来自 00B8C003

00069370   00B8C3C8  /CALL 到 GetTickCount 来自 00B8C3C2             ; ★ 注意!在这里清除断点后Alt+F9返回程序

00B8C3C8    2B85 A4D4FFFF   SUB EAX,DWORD PTR SS:[EBP-2B5C]          ; 返回到这里
00B8C3CE    8B8D A8D4FFFF   MOV ECX,DWORD PTR SS:[EBP-2B58]
00B8C3D4    6BC9 32         IMUL ECX,ECX,32
00B8C3D7    81C1 D0070000   ADD ECX,7D0
00B8C3DD    3BC1            CMP EAX,ECX
00B8C3DF    76 07           JBE SHORT 00B8C3E8
00B8C3E1    C685 34D9FFFF 0>MOV BYTE PTR SS:[EBP-26CC],1
00B8C3E8    83BD E4D7FFFF 0>CMP DWORD PTR SS:[EBP-281C],0
00B8C3EF    0F85 8A000000   JNZ 00B8C47F

在 CPU 窗口按 Ctrl+S 查找如下代码
PUSH EAX
XCHG CX,CX
POP EAX
STC
运行到这里找不到这段代码
用F8单步运行后
结果也出来红色代码段为如下请大侠帮忙分析代码这里是重定位吗
00B3CCA6    C705 E0C0B400 6>mov     dword ptr ds:[B4C0E0], 0B4CB68 ; ★ 从这里开始出现红色代码
00B3CCB0    A1 E01EB500     mov     eax, dword ptr ds:[B51EE0]
00B3CCB5    8B80 70050000   mov     eax, dword ptr ds:[eax+570]
00B3CCBB    8985 14D9FFFF   mov     dword ptr ss:[ebp-26EC], eax
00B3CCC1    83A5 50D9FFFF 0>and     dword ptr ss:[ebp-26B0], 0
00B3CCC8    EB 0D           jmp     short 00B3CCD7
00B3CCCA    8B85 50D9FFFF   mov     eax, dword ptr ss:[ebp-26B0]
00B3CCD0    40              inc     eax
00B3CCD1    8985 50D9FFFF   mov     dword ptr ss:[ebp-26B0], eax
00B3CCD7    A1 E01EB500     mov     eax, dword ptr ds:[B51EE0]
00B3CCDC    66:8B80 6C05000>mov     ax, word ptr ds:[eax+56C]
00B3CCE3    66:8985 3CA9FFF>mov     word ptr ss:[ebp+FFFFA93C], ax
00B3CCEA    0FB785 3CA9FFFF movzx   eax, word ptr ss:[ebp+FFFFA93C]
00B3CCF1    3985 50D9FFFF   cmp     dword ptr ss:[ebp-26B0], eax
00B3CCF7    0F8D EC010000   jge     00B3CEE9
00B3CCFD    8B85 14D9FFFF   mov     eax, dword ptr ss:[ebp-26EC]
00B3CD03    8B00            mov     eax, dword ptr ds:[eax]
00B3CD05    8985 0CC1FFFF   mov     dword ptr ss:[ebp-3EF4], eax
00B3CD0B    8B85 14D9FFFF   mov     eax, dword ptr ss:[ebp-26EC]
00B3CD11    83C0 04         add     eax, 4
00B3CD14    8985 14D9FFFF   mov     dword ptr ss:[ebp-26EC], eax
00B3CD1A    8B85 14D9FFFF   mov     eax, dword ptr ss:[ebp-26EC]
00B3CD20    8B00            mov     eax, dword ptr ds:[eax]
00B3CD22    8985 10C1FFFF   mov     dword ptr ss:[ebp-3EF0], eax
00B3CD28    8B85 14D9FFFF   mov     eax, dword ptr ss:[ebp-26EC]
00B3CD2E    83C0 04         add     eax, 4
00B3CD31    8985 14D9FFFF   mov     dword ptr ss:[ebp-26EC], eax
00B3CD37    A1 E49FB500     mov     eax, dword ptr ds:[B59FE4]
00B3CD3C    66:8B00         mov     ax, word ptr ds:[eax]
00B3CD3F    66:8985 14C1FFF>mov     word ptr ss:[ebp-3EEC], ax
00B3CD46    A1 E49FB500     mov     eax, dword ptr ds:[B59FE4]
00B3CD4B    40              inc     eax
00B3CD4C    40              inc     eax
00B3CD4D    A3 E49FB500     mov     dword ptr ds:[B59FE4], eax
00B3CD52    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CD59    50              push    eax
00B3CD5A    FF35 E49FB500   push    dword ptr ds:[B59FE4]            ; 复件_Scr.009CF9BE
00B3CD60    8D85 0CB1FFFF   lea     eax, dword ptr ss:[ebp+FFFFB10C]
00B3CD66    50              push    eax
00B3CD67    E8 EC840000     call    00B45258                         ; jmp 到 msvcrt.memcpy
00B3CD6C    83C4 0C         add     esp, 0C
00B3CD6F    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CD76    8B0D E49FB500   mov     ecx, dword ptr ds:[B59FE4]       ; 复件_Scr.009CF9BE
00B3CD7C    03C8            add     ecx, eax
00B3CD7E    890D E49FB500   mov     dword ptr ds:[B59FE4], ecx
00B3CD84    83BD 0CC1FFFF 0>cmp     dword ptr ss:[ebp-3EF4], 0
00B3CD8B    0F84 53010000   je      00B3CEE4
00B3CD91    8B85 10C1FFFF   mov     eax, dword ptr ss:[ebp-3EF0]
00B3CD97    8985 00B1FFFF   mov     dword ptr ss:[ebp+FFFFB100], eax
00B3CD9D    8D85 0CB1FFFF   lea     eax, dword ptr ss:[ebp+FFFFB10C]
00B3CDA3    8985 08B1FFFF   mov     dword ptr ss:[ebp+FFFFB108], eax
00B3CDA9    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CDB0    8B8D 08B1FFFF   mov     ecx, dword ptr ss:[ebp+FFFFB108]
00B3CDB6    03C8            add     ecx, eax
00B3CDB8    898D 04B1FFFF   mov     dword ptr ss:[ebp+FFFFB104], ecx
00B3CDBE    EB 0D           jmp     short 00B3CDCD
00B3CDC0    8B85 08B1FFFF   mov     eax, dword ptr ss:[ebp+FFFFB108]
00B3CDC6    40              inc     eax
00B3CDC7    8985 08B1FFFF   mov     dword ptr ss:[ebp+FFFFB108], eax
00B3CDCD    8B85 08B1FFFF   mov     eax, dword ptr ss:[ebp+FFFFB108]
00B3CDD3    3B85 04B1FFFF   cmp     eax, dword ptr ss:[ebp+FFFFB104]
00B3CDD9    73 1F           jnb     short 00B3CDFA
00B3CDDB    8D8D 00B1FFFF   lea     ecx, dword ptr ss:[ebp+FFFFB100]
00B3CDE1    E8 5A42FDFF     call    00B11040
00B3CDE6    8B8D 08B1FFFF   mov     ecx, dword ptr ss:[ebp+FFFFB108]
00B3CDEC    8A09            mov     cl, byte ptr ds:[ecx]
00B3CDEE    32C8            xor     cl, al
00B3CDF0    8B85 08B1FFFF   mov     eax, dword ptr ss:[ebp+FFFFB108]
00B3CDF6    8808            mov     byte ptr ds:[eax], cl
00B3CDF8  ^ EB C6           jmp     short 00B3CDC0
00B3CDFA    8D85 FCB0FFFF   lea     eax, dword ptr ss:[ebp+FFFFB0FC]
00B3CE00    50              push    eax
00B3CE01    6A 04           push    4
00B3CE03    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CE0A    50              push    eax
00B3CE0B    8B85 0CD8FFFF   mov     eax, dword ptr ss:[ebp-27F4]
00B3CE11    0385 0CC1FFFF   add     eax, dword ptr ss:[ebp-3EF4]
00B3CE17    50              push    eax
00B3CE18    FF15 1861B400   call    dword ptr ds:[B46118]            ; kernel32.VirtualProtect
00B3CE1E    A0 BC00B500     mov     al, byte ptr ds:[B500BC]
00B3CE23    8885 24A9FFFF   mov     byte ptr ss:[ebp+FFFFA924], al
00B3CE29    0FB685 24A9FFFF movzx   eax, byte ptr ss:[ebp+FFFFA924]
00B3CE30    85C0            test    eax, eax
00B3CE32    74 64           je      short 00B3CE98
00B3CE34    6A 00           push    0
00B3CE36    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CE3D    50              push    eax
00B3CE3E    8B85 0CD8FFFF   mov     eax, dword ptr ss:[ebp-27F4]
00B3CE44    0385 0CC1FFFF   add     eax, dword ptr ss:[ebp-3EF4]
00B3CE4A    50              push    eax
00B3CE4B    E8 EA160000     call    00B3E53A
00B3CE50    83C4 0C         add     esp, 0C
00B3CE53    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CE5A    50              push    eax
00B3CE5B    8D85 0CB1FFFF   lea     eax, dword ptr ss:[ebp+FFFFB10C]
00B3CE61    50              push    eax
00B3CE62    8B85 0CD8FFFF   mov     eax, dword ptr ss:[ebp-27F4]
00B3CE68    0385 0CC1FFFF   add     eax, dword ptr ss:[ebp-3EF4]
00B3CE6E    50              push    eax
00B3CE6F    E8 E4830000     call    00B45258                         ; jmp 到 msvcrt.memcpy
00B3CE74    83C4 0C         add     esp, 0C
00B3CE77    6A 01           push    1
00B3CE79    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CE80    50              push    eax
00B3CE81    8B85 0CD8FFFF   mov     eax, dword ptr ss:[ebp-27F4]
00B3CE87    0385 0CC1FFFF   add     eax, dword ptr ss:[ebp-3EF4]
00B3CE8D    50              push    eax
00B3CE8E    E8 A7160000     call    00B3E53A
00B3CE93    83C4 0C         add     esp, 0C
00B3CE96    EB 24           jmp     short 00B3CEBC
00B3CE98    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CE9F    50              push    eax
00B3CEA0    8D85 0CB1FFFF   lea     eax, dword ptr ss:[ebp+FFFFB10C]
00B3CEA6    50              push    eax
00B3CEA7    8B85 0CD8FFFF   mov     eax, dword ptr ss:[ebp-27F4]
00B3CEAD    0385 0CC1FFFF   add     eax, dword ptr ss:[ebp-3EF4]
00B3CEB3    50              push    eax
00B3CEB4    E8 9F830000     call    00B45258                         ; jmp 到 msvcrt.memcpy
00B3CEB9    83C4 0C         add     esp, 0C
00B3CEBC    8D85 FCB0FFFF   lea     eax, dword ptr ss:[ebp+FFFFB0FC]
00B3CEC2    50              push    eax
00B3CEC3    FFB5 FCB0FFFF   push    dword ptr ss:[ebp+FFFFB0FC]
00B3CEC9    0FB785 14C1FFFF movzx   eax, word ptr ss:[ebp-3EEC]
00B3CED0    50              push    eax
00B3CED1    8B85 0CD8FFFF   mov     eax, dword ptr ss:[ebp-27F4]
00B3CED7    0385 0CC1FFFF   add     eax, dword ptr ss:[ebp-3EF4]
00B3CEDD    50              push    eax
00B3CEDE    FF15 1861B400   call    dword ptr ds:[B46118]            ; kernel32.VirtualProtect
00B3CEE4  ^ E9 E1FDFFFF     jmp     00B3CCCA
00B3CEE9    EB 03           jmp     short 00B3CEEE
由于不能上传文件,附上DLL文件下载地址http://cxgaxy.go2.icpcn.com/dll.rar请大侠帮忙。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己先顶一下。
2007-9-14 09:33
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
3
我觉得1.x-2.x还比较有力度`
2007-9-14 09:54
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
试试 Armadillo V4.0-V4.4.DLL.oSc
2007-9-14 11:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
试过了,就是不能修复重定位
2007-9-14 13:07
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
试试看!虚心向楼主学习
2007-9-29 18:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上的不要向我学习。要向高手学习。我是新手是来求助的。可惜都没有高手指点。希望高手能够脱了。再写个脱文。帮助新手学习。先谢谢了。
2007-9-30 13:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
为什么没有人帮助新手啊
2007-10-4 09:22
0
游客
登录 | 注册 方可回帖
返回
//