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直播授课