首页
社区
课程
招聘
Armadillo 1.xx - 2.xx 脱壳迷路之痛苦,请求指点[求助]
发表于: 2006-8-3 10:40 4641

Armadillo 1.xx - 2.xx 脱壳迷路之痛苦,请求指点[求助]

2006-8-3 10:40
4641
Armadillo 1.xx - 2.xx 脱壳迷路之痛苦,请求指点

先看我出了哪些问题吧!谢过了!

☆★

设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。

005FBD93 >/$  55            push    ebp
005FBD94  |.  8BEC          mov     ebp, esp
005FBD96  |.  6A FF         push    -1
005FBD98  |.  68 F85E6200   push    00625EF8
005FBD9D  |.  68 D0BA5F00   push    005FBAD0                         ;  SE 处理程序安装
005FBDA2  |.  64:A1 0000000>mov     eax, fs:[0]
005FBDA8  |.  50            push    eax
005FBDA9  |.  64:8925 00000>mov     fs:[0], esp
005FBDB0  |.  83EC 58       sub     esp, 58
005FBDB3  |.  53            push    ebx
005FBDB4  |.  56            push    esi
005FBDB5  |.  57            push    edi
005FBDB6  |.  8965 E8       mov     [ebp-18], esp
005FBDB9  |.  FF15 88016200 call    [<&KERNEL32.GetVersion>]         ;  kernel32.GetVersion
005FBDBF  |.  33D2          xor     edx, edx
005FBDC1  |.  8AD4          mov     dl, ah

一、变换双进程,使程序把自己当成子进程运行

下断:BP OpenMutexA,F9运行

7C80EC1B >  8BFF            mov     edi, edi                  ;break
7C80EC1D    55              push    ebp
7C80EC1E    8BEC            mov     ebp, esp
7C80EC20    51              push    ecx
7C80EC21    51              push    ecx
7C80EC22    837D 10 00      cmp     dword ptr [ebp+10], 0
7C80EC26    56              push    esi
7C80EC27    0F84 7A500300   je      7C843CA7
7C80EC2D    64:A1 18000000  mov     eax, fs:[18]
7C80EC33    FF75 10         push    dword ptr [ebp+10]

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

0012D7AC   005E79B8  /CALL 到 OpenMutexA 来自 ZWDS.005E79B2
0012D7B0   001F0001  |Access = 1F0001
0012D7B4   00000000  |Inheritable = FALSE
0012D7B8   0012DDEC  \MutexName = "68C::DADAC4AACC"
0012D7BC   0012FF2C
0012D7C0   00000000

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

Ctrl+G输入401000,来到以下空代码地址

00401000     0000                          add byte ptr ds:[eax],al
00401002     0000                          add byte ptr ds:[eax],al
00401004     0000                          add byte ptr ds:[eax],al
00401006     0000                          add byte ptr ds:[eax],al
00401008     0000                          add byte ptr ds:[eax],al
0040100A     0000                          add byte ptr ds:[eax],al
0040100C     0000                          add byte ptr ds:[eax],al
0040100E     0000                          add byte ptr ds:[eax],al
00401010     0000                          add byte ptr ds:[eax],al
00401012     0000                          add byte ptr ds:[eax],al

change:

00401000    60              pushad
00401001    9C              pushfd
00401002    68 ECDD1200     push    12DDEC                           ; ASCII "68C::DADAC4AACC"
00401007    33C0            xor     eax, eax
00401009    50              push    eax
0040100A    50              push    eax
0040100B    E8 2FDB407C     call    kernel32.CreateMutexA
00401010    9D              popfd
00401011    61              popad
00401012  - E9 04DC407C     jmp     kernel32.OpenMutexA
00401017    0000            add     [eax], al

新建EIP,F9运行,再次中断在OpenMutexA处,取消该断点,然后返回401000处,撤消

下断:He GetModuleHandleA,F9运行

断:

7C80B529 >  8BFF            mov     edi, edi
7C80B52B    55              push    ebp
7C80B52C    8BEC            mov     ebp, esp
7C80B52E    837D 08 00      cmp     dword ptr [ebp+8], 0
7C80B532    74 18           je      short 7C80B54C
7C80B534    FF75 08         push    dword ptr [ebp+8]
7C80B537    E8 682D0000     call    7C80E2A4
7C80B53C    85C0            test    eax, eax
7C80B53E    74 08           je      short 7C80B548
7C80B540    FF70 04         push    dword ptr [eax+4]

在这里中断8次,然后Alt+F9返回程序,并取消硬件断点

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

00EAF558   7365D4A4  /CALL 到 GetModuleHandleA 来自 msctfime.7365D49E
00EAF55C   00EAF560  \pModule = "D:\WINDOWS\system32\ntdll.dll"
00EAF560   575C3A44
00EAF564   4F444E49

0012CE60   5D175394  /CALL 到 GetModuleHandleA 来自 5D17538E
0012CE64   5D1753E0  \pModule = "kernel32.dll"
0012CE68   5D1E2B38
0012CE6C   00000000
0012CE70   5D170000
0012CE74   7C812972  返回到 kernel32.7C812972 来自 ntdll.RtlCreateHeap
0012CE78   40001062
0012CE7C   0012CE68

00EAEA70   77F45BD8  /CALL 到 GetModuleHandleA 来自 SHLWAPI.77F45BD2
00EAEA74   77F4501C  \pModule = "KERNEL32.DLL"
00EAEA78   00000001
00EAEA7C   77F40000  SHLWAPI.77F40000
00EAEA80   00000000
00EAEA84   000058A1
00EAEA88  /00EAEA9C
00EAEA8C  |77F452DD  返回到 SHLWAPI.77F452DD 来自 SHLWAPI.77F45BB5
00EAEA90  |00000000

00EAEA08   7320F55D  /CALL 到 GetModuleHandleA 来自 WINWB86.7320F557
00EAEA0C   7321B3B8  \pModule = "USER32.DLL"
00EAEA10   00000001
00EAEA14   73200000  WINWB86.73200000
00EAEA18   7320FB0D  返回到 WINWB86.7320FB0D 来自 WINWB86.7320F550
00EAEA1C   00000001
00EAEA20   73200000  WINWB86.73200000
00EAEA24   00EAEADC
00EAEA28   73210610  WINWB86.<模块入口点>

0012D750   005E6AF3  /CALL 到 GetModuleHandleA 来自 ZWDS.005E6AED
0012D754   00000000  \pModule = NULL
0012D758   0012D764
0012D75C   00F01436
0012D760   0067EEB4  ZWDS.0067EEB4
0012D764   00000000
0012D768   00640000  ZWDS.00640000
0012D76C   0012D700

00127A94   00F1530E  /CALL 到 GetModuleHandleA 来自 00F15308
00127A98   00F28BAC  \pModule = "kernel32.dll"
00127A9C   00F29CC4  ASCII "VirtualAlloc"
00127AA0   00F2C8D8
00127AA4   7C9210ED  ntdll.RtlLeaveCriticalSection
00127AA8   00000000

00127A94   00F1532B  /CALL 到 GetModuleHandleA 来自 00F15325
00127A98   00F28BAC  \pModule = "kernel32.dll"
00127A9C   00F29CB8  ASCII "VirtualFree"
00127AA0   00F2C8D8
00127AA4   7C9210ED  ntdll.RtlLeaveCriticalSection

001277F8   00F04F9E  /CALL 到 GetModuleHandleA 来自 00F04F98             ;  返回
001277FC   00127948  \pModule = "kernel32.dll"
00127800   0012CC64
00127804   0CB4DBD0
00127808   00000000
0012780C   00F2809C

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

00F04F97    50              push    eax
00F04F98    FF15 B430F200   call    [F230B4]                         ;
kernel32.GetModuleHandleA
00F04F9E    8B0D AC0DF300   mov     ecx, [F30DAC]                       ; 返回到这里
00F04FA4    89040E          mov     [esi+ecx], eax
00F04FA7    A1 AC0DF300     mov     eax, [F30DAC]
00F04FAC    391C06          cmp     [esi+eax], ebx
00F04FAF    75 16           jnz     short 00F04FC7
00F04FB1    8D85 B4FEFFFF   lea     eax, [ebp-14C]
00F04FB7    50              push    eax
00F04FB8    FF15 B432F200   call    [F232B4]                         ; kernel32.LoadLibraryA
00F04FBE    8B0D AC0DF300   mov     ecx, [F30DAC]
00F04FC4    89040E          mov     [esi+ecx], eax
00F04FC7    A1 AC0DF300     mov     eax, [F30DAC]
00F04FCC    391C06          cmp     [esi+eax], ebx
00F04FCF    0F84 2F010000   je      00F05104              ;这个应该是Magic Jump 吧?
00F04FD5    33C9            xor     ecx, ecx
00F04FD7    8B07            mov     eax, [edi]
00F04FD9    3918            cmp     [eax], ebx

反正就是后来改Z或者是直接改为JMP,后面用内存访问断点怎么都出现无法处理的异常,强制结束了。
各位大哥可否告知小弟一二原因,小弟已为这个事痛了三天了!

00F17FE2    AE              scas    byte ptr es:[edi]
00F17FE3    2F              das
00F17FE4    61              popad
00F17FE5    17              pop     ss
00F17FE6    57              push    edi
00F17FE7    44              inc     esp
00F17FE8    CC              int3
00F17FE9    65:8679 A3      xchg    gs:[ecx-5D], bh
00F17FED    72 0B           jb      short 00F17FFA                    |
―――――――――――――――――――――――――――――――――――
00F17FEF    B2 FA           mov     dl, 0FA                           |
―――――――――――――――――――――――――――――――――――
00F17FF1    EA FAEB0E7C 8BB>jmp     far B78B:7C0EEBFA                 |光标最后停在这三行,―――――――――――――――――――――――――――――――――――|而这一版片都是红色代码
00F17FF8    891D 8C9D6041   mov     [41609D8C], ebx
00F17FFE    FC              cld
00F17FFF    45              inc     ebp
00F18000    5F              pop     edi
00F18001    66:83EE B3      sub     si, 0FFB3
00F18005    196490 74       sbb     [eax+edx*4+74], esp
00F18009    A7              cmps    dword ptr [esi], dword ptr es:[e>
00F1800A    BD 18CF9F78     mov     ebp, 789FCF18
00F1800F  ^ 72 CD           jb      short 00F17FDE
00F18011    65:B9 900D6DB6  mov     ecx, B66D0D90

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
建议用Armadillo find protected 1.3扫描一下,做到心中有数。

00F04FCF    0F84 2F010000   je      00F05104              ;Magic Jump

改成jmp后,等执行完这个循环(出口在00F05104这个地址附近),再将Magic Jump 恢复。
2006-8-3 10:50
0
雪    币: 152
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
学习中。。。。
2006-8-3 13:06
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
4
很开心版主热心支持,

然而依然存在同样的问题!
都是跳得太远而无法处理!

00F17FE2    AE              scas    byte ptr es:[edi]
00F17FE3    2F              das
00F17FE4    61              popad
00F17FE5    17              pop     ss
00F17FE6    57              push    edi
00F17FE7    44              inc     esp
00F17FE8    CC              int3
00F17FE9    65:8679 A3      xchg    gs:[ecx-5D], bh
00F17FED    72 0B           jb      short 00F17FFA                    |
―――――――――――――――――――――――――――――――――――
00F17FEF    B2 FA           mov     dl, 0FA                           |
―――――――――――――――――――――――――――――――――――
00F17FF1    EA FAEB0E7C 8BB>jmp     far B78B:7C0EEBFA                 |光标最后停在这三行,
―――――――――――――――――――――――――――――――――――|而这一版片都是红色代码
00F17FF8    891D 8C9D6041   mov     [41609D8C], ebx
00F17FFE    FC              cld
00F17FFF    45              inc     ebp
00F18000    5F              pop     edi
00F18001    66:83EE B3      sub     si, 0FFB3
00F18005    196490 74       sbb     [eax+edx*4+74], esp
00F18009    A7              cmps    dword ptr [esi], dword ptr es:[e>
00F1800A    BD 18CF9F78     mov     ebp, 789FCF18
00F1800F  ^ 72 CD           jb      short 00F17FDE
00F18011    65:B9 900D6DB6  mov     ecx, B66D0D90
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========

Armadillo find protected 1.3结果如下:

======== 03-08-2006 19:00:43 ========
D:\Program Files\xdsasd\ZdsS.exe
★ 目标为Armadillo保护
★ 特征识别 = A84C0804
保护系统级别为 (专业版)
◆所用到的保护模式有◆
屏蔽调试器
双进程模式
【备份密钥设置】
固定的备份密钥
【程序压缩设置】
较好/较慢地压缩方式
【其它保护设置】

======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========

我个人经过多次的想象力调试,只感觉好像401000不能被写入,一旦有数据写入就出现问题!

这样子的有办法解决吗?
2006-8-3 20:33
0
雪    币: 417
活跃值: (475)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
5
◆所用到的保护模式有◆
屏蔽调试器
双进程模式

中文的意思不大懂,是不是等于:
Debug-Blocker
CopyMem-II
如果是的话,楼主就走错了,按copymem-ii来脱。
2006-8-3 21:40
0
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 kanxue 发布
建议用Armadillo find protected 1.3扫描一下,做到心中有数。

00F04FCF 0F84 2F010000 je 00F05104 ;Magic Jump


........


同意这个观点 可能是检测到你修改了代码
2006-8-3 23:18
0
雪    币: 250
活跃值: (11)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
CopyMem-II模式,呵呵,当然不能像你那样脱了,要多看看教程,再脱,就没什么问题了
2006-8-3 23:25
0
雪    币: 233
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
手脱会很辛苦  CC修复太累   
2006-8-3 23:38
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
9
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
!- Protected Armadillo
?- Signature = A84C0804
Protection system (Professional)
!- <Protection Options>
Debug-Blocker
CopyMem-II
!- <Backup Key Options>
Fixed Backup Keys
!- <Compression Options>
Better/Slower Compression
!- <Other Options>
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========
======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ======== ========

谢谢指点
2006-8-4 18:01
0
游客
登录 | 注册 方可回帖
返回
//