!- Protected Armadillo
Protection system (Professional)
!- <Protection Options>
Standard protection or Minimum protection
!- <Backup Key Options>
Fixed Backup Keys
!- <Compression Options>
Better/Slower Compression
!- <Other Options>
Disable Monitoring Thread
!- Version 4.40 31October2005
开始按照1.x的脱壳方法
载入停在这里
004B0C43 >/$ 55 push ebp
004B0C44 |. 8BEC mov ebp, esp
004B0C46 |. 6A FF push -1
004B0C48 |. 68 909F4D00 push 004D9F90
004B0C4D |. 68 80094B00 push 004B0980 ; SE 处理程序安装
004B0C52 |. 64:A1 0000000>mov eax, dword ptr fs:[0]
下断 bp OpenMutexA
F9运行
断下,堆栈值:
0012F798 0049C7B8 /CALL 到 OpenMutexA 来自 游戏菜单.0049C7B2
0012F79C 001F0001 |Access = 1F0001
0012F7A0 00000000 |Inheritable = FALSE
0012F7A4 0012FDD8 \MutexName = "FE8::DA7F80D3DA" ****
Ctrl+G,到401000
填入:
pushad
pushfd
push 12FDD8
xor eax, eax
push eax
push eax
call kernel32.CreateMutexA
popfd
popad
jmp kernel32.OpenMutexA
60 9C 68 D8 FD 12 00 33 C0 50 50 E8 97 83 42 7C 9D 61 E9 F0 F5 42 7C 90
点右键 选在此处新建 Eip ,看到Eip 变为 401000
F9运行,断下:
7C830607 > 8BFF mov edi, edi
7C830609 55 push ebp
7C83060A 8BEC mov ebp, esp
7C83060C 51 push ecx
7C83060D 51 push ecx
7C83060E 837D 10 00 cmp dword ptr [ebp+10], 0
7C830612 56 push esi
7C830613 0F84 49130100 je 7C841962
7C830619 FF75 10 push dword ptr [ebp+10]
7C83061C 64:8B35 1800000>mov esi, dword ptr fs:[18]
7C830623 8D45 F8 lea eax, dword ptr [ebp-8]
7C830626 50 push eax
7C830627 81C6 F80B0000 add esi, 0BF8
7C83062D FF15 8C10807C call dword ptr [<&ntdll.RtlInitAnsiSt>; ntdll.RtlInitAnsiString
7C830633 6A 00 push 0
清除断点
Ctrl+G,到401000
撤消修改
下断
bp GetModuleHandleA+5
0012EF2C /0012EF64
0012EF30 |773D8089 返回到 773D8089 来自 kernel32.GetModuleHandleA
0012EF34 |77372E84 ASCII "kernel32.dll"
0012EF38 |773E0598
0012EF3C |00000000
0012EF40 |77370000
0012EF44 |7C965109 返回到 ntdll.7C965109 来自 ntdll.7C958256
0012EF48 |7C82B227 返回到 kernel32.7C82B227 来自 ntdll.RtlCreateHeap
0012EF70 /0012EF90
0012EF74 |773D52D6 返回到 773D52D6 来自 kernel32.GetModuleHandleA
0012EF78 |77372E84 ASCII "kernel32.dll"
0012EF7C |7C823EC7 kernel32.GetProcessHeap
0012EF48 /0012EF80
0012EF4C |77B98A56 返回到 msvcrt.77B98A56 来自 kernel32.GetModuleHandleA
0012EF50 |77B720C0 ASCII "kernel32.dll"
0012EF54 |77BC3A48 msvcrt.77BC3A48
0012EF58 |00000000
0012EF5C |77B7F78B msvcrt.<模块入口点>
0012EF60 |7C965109 返回到 ntdll.7C965109 来自 ntdll.7C958256
0012EF64 |7C82B227 返回到 kernel32.7C82B227 来自 ntdll.RtlCreateHeap
0012EF50 77B98AC0 msvcrt.77B98AC0
0012EF54 77BC3B80 msvcrt.77BC3B80
0012EF58 00000012
0012EF5C 77B7F78B msvcrt.<模块入口点>
0012EF60 00000001
0012EF64 7C82B227 kernel32.7C82B227
0012EF68 0012EF54
0012EF6C 00000000
0012EF70 0012F0C8
0012EF74 77B96C74 msvcrt._except_handler3
0012EF78 77B73200 msvcrt.77B73200
0012EF7C FFFFFFFF
0012EF80 77B98AC0 msvcrt.77B98AC0
0012EF84 77B9B619 msvcrt.77B9B619
0012EF88 77BC3B68 msvcrt.77BC3B68
0012EF8C /0012EFB0
0012EF90 |77B9B232 返回到 msvcrt.77B9B232 来自 kernel32.GetModuleHandleA
0012EF94 |77B720C0 ASCII "kernel32.dll"
0012EF98 |7C823EC7 kernel32.GetProcessHeap
这里还有一个,忘了复制过来了
00129524 /0012EC6C
00129528 |00B77122 返回到 00B77122 来自 kernel32.GetModuleHandleA
0012952C |00B8BC1C ASCII "kernel32.dll"
00129530 |00B8CEB8 ASCII "VirtualFree"
这里经过几个异常,来到下面
00129288 /00129528
0012928C |00B65FC9 返回到 00B65FC9 来自 kernel32.GetModuleHandleA
00129290 |001293DC ASCII "kernel32.dll"
取消断点,Alt+F9返回
00B65FC3 FF15 B860B800 call dword ptr [B860B8] ; kernel32.GetModuleHandleA
00B65FC9 8B0D AC40B900 mov ecx, dword ptr [B940AC] ;返回到这里
00B65FCF 89040E mov dword ptr [esi+ecx], eax
00B65FD2 A1 AC40B900 mov eax, dword ptr [B940AC]
00B65FD7 391C06 cmp dword ptr [esi+eax], ebx
00B65FDA 75 16 jnz short 00B65FF2
00B65FDC 8D85 B4FEFFFF lea eax, dword ptr [ebp-14C]
00B65FE2 50 push eax
00B65FE3 FF15 BC62B800 call dword ptr [B862BC] ; kernel32.LoadLibraryA
00B65FE9 8B0D AC40B900 mov ecx, dword ptr [B940AC]
00B65FEF 89040E mov dword ptr [esi+ecx], eax
00B65FF2 A1 AC40B900 mov eax, dword ptr [B940AC]
00B65FF7 391C06 cmp dword ptr [esi+eax], ebx
00B65FFA 0F84 2F010000 je 00B6612F ;看起来这个是magic jump了,修改je为jmp
00B66000 33C9 xor ecx, ecx
00B66002 8B07 mov eax, dword ptr [edi]
00B66004 3918 cmp dword ptr [eax], ebx
00B66006 74 06 je short 00B6600E
在下面找到
00B66144 /EB 03 jmp short 00B66149 ;这里下断,F9运行,断下后取消之前的修改
00B66146 |D6 salc
00B66147 |D6 salc
到这里教程上的第一步就完成了,开始第二步
bp GetCurrentThreadId
取到下面这些:
0012F6D0 00406597 /CALL 到 GetCurrentThreadId 来自 xxxxxx.00406592
0012F6D4 00404593 返回到 游戏菜单.00404593
0012F6D8 0012F710 指向下一个 SEH 记录的指针
0012F6DC 004045A1 SE处理程序
00DDFE1C 73443505 /CALL 到 GetCurrentThreadId 来自 MSVBVM60.734434FF
00DDFE20 7354E470 MSVBVM60.7354E470
00DDFE24 00000000
00DDFDF8 76D21426 /CALL 到 GetCurrentThreadId 来自 adsldpc.76D21420
00DDFDFC 00000000
00DDFE00 00000003
00DDFE04 76D20000 adsldpc.76D20000
00DDFE08 76D21414 返回到 adsldpc.76D21414 来自 adsldpc.76D2141B
00DDFE44 76E7128B /CALL 到 GetCurrentThreadId 来自 WLDAP32.76E71285
00DDFE48 /00DDFE68
00DDFE4C |76E71176 返回到 WLDAP32.76E71176 来自 WLDAP32.76E7119A
00DDFE14 77F47266 /CALL 到 GetCurrentThreadId 来自 ADVAPI32.77F47260
00DDFE18 00000003
0012F698 004255EE /CALL 到 GetCurrentThreadId 来自 xxxxxxx.004255E9
0012F69C 00000001
0012F684 00439030 /CALL 到 GetCurrentThreadId 来自 游戏菜单.0043902B
0012F688 0012F6AC
0012F68C 0012F6C4 指向下一个 SEH 记录的指针
0012F690 00439134 SE处理程序
0173FBF0 77B7F5E3 /CALL 到 GetCurrentThreadId 来自 msvcrt.77B7F5DD
0173FBF4 00000000
0173FBD8 76E711C2 /CALL 到 GetCurrentThreadId 来自 WLDAP32.76E711BC
0173FBDC /0173FBFC
0173FBB4 73443505 /CALL 到 GetCurrentThreadId 来自 MSVBVM60.734434FF
0173FBB8 00000000
0012F374 71ADC291 /CALL 到 GetCurrentThreadId 来自 71ADC28B
0012F378 0012F37C
0012F37C 00000030
0012E8A8 744315F7 /CALL 到 GetCurrentThreadId 来自 744315F1
0012E8AC 00000001
这里的每个都试过返回都找不到正确的出路了。。能不能帮我提供下思路?
现在都不知道是错在哪里了。。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课