首页
社区
课程
招聘
[原创]GiveMe5's Crackme简单脱壳算法分析
发表于: 2006-5-7 14:50 5553

[原创]GiveMe5's Crackme简单脱壳算法分析

2006-5-7 14:50
5553

【破解日期】 2006年5月7日
【破解作者】 冷血书生
【作者邮箱】 没有
【作者主页】 http://blog.csdn.net/xueleng/
【使用工具】 OD
【破解平台】 Win9x/NT/2000/XP
【软件名称】 GiveMe5's Crackme
【下载地址】 本地下载
【软件简介】 没啥好介绍的,地球人都知道的事情~~
【软件大小】 500K
【加壳方式】 Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks [Overlay]
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】

一、脱壳分析

004302E3 >  55             push ebp                                    ; 载入停在这里,下断点he GetModuleHandleA
004302E4    8BEC           mov ebp,esp
004302E6    6A FF          push -1
004302E8    68 20AB4500    push packed.0045AB20
004302ED    68 20004300    push packed.00430020
004302F2    64:A1 00000000 mov eax,dword ptr fs:[0]

///////////////////////////////////////////////////////////////////////////////////////////
堆栈变化:

0012FF38   004303AB  /CALL 到 GetModuleHandleA 来自 packed.004303A5
0012FF3C   00000000  \pModule = NULL

0012C864   4B21210E  /CALL 到 GetModuleHandleA 来自 4B212108
0012C868   0012C86C  \pModule = "D:\WINDOWS\system32\ntdll.dll"

0012C86C   4B21210E  /CALL 到 GetModuleHandleA 来自 4B212108
0012C870   0012C874  \pModule = "D:\WINDOWS\system32\imm32.dll"

0012C7B8   4B21210E  /CALL 到 GetModuleHandleA 来自 4B212108
0012C7BC   0012C7C0  \pModule = "D:\WINDOWS\system32\KERNEL32"

0012CEF4   4C52D4A7  /CALL 到 GetModuleHandleA 来自 msctfime.4C52D4A1
0012CEF8   0012CEFC  \pModule = "D:\WINDOWS\system32\ntdll.dll"

0012CF48   773D7FF9  /CALL 到 GetModuleHandleA 来自 773D7FF3
0012CF4C   77372E84  \pModule = "kernel32.dll"

0012CF8C   773D5246  /CALL 到 GetModuleHandleA 来自 773D5240
0012CF90   77372E84  \pModule = "kernel32.dll"
0012CF94   7C8284FF  kernel32.GetProcessHeap

0012CFA8   71B110E9  /CALL 到 GetModuleHandleA 来自 WSOCK32.71B110E3
0012CFAC   71B12F8C  \pModule = "kernel32.dll"

0012D750   0041B003  /CALL 到 GetModuleHandleA 来自 packed.0041AFFD
0012D754   00000000  \pModule = NULL

00127ADC   00BF4234  /CALL 到 GetModuleHandleA 来自 00BF422E
00127AE0   00C07B00  \pModule = "kernel32.dll"
00127AE4   00C08BB4  ASCII "VirtualAlloc"

00127ADC   00BF4251  /CALL 到 GetModuleHandleA 来自 00BF424B
00127AE0   00C07B00  \pModule = "kernel32.dll"
00127AE4   00C08BA8  ASCII "VirtualFree"

00106F54   00BFED03  /CALL 到 GetModuleHandleA 来自 00BFECFD
00106F58   00000000  \pModule = NULL

00106F88   00BFE969  /CALL 到 GetModuleHandleA 来自 00BFE967
00106F8C   00000000  \pModule = NULL

00106F88   00BFEA68  /CALL 到 GetModuleHandleA 来自 00BFEA66
00106F8C   00000000  \pModule = NULL

00106F88   00BFEAC4  /CALL 到 GetModuleHandleA 来自 00BFEAC2
00106F8C   00000000  \pModule = NULL

00106F88   00BFEBEA  /CALL 到 GetModuleHandleA 来自 00BFEBE8
00106F8C   00000000  \pModule = NULL

00127840   00BE45E1  /CALL 到 GetModuleHandleA 来自 00BE45DB
00127844   00127990  \pModule = "kernel32.dll"        -------------> 返回的好时机


///////////////////////////////////////////////////////////////////////////////////////////


00BE45E1    8B0D 4CF5C000  mov ecx,dword ptr ds:[C0F54C]               ; 返回到这里
00BE45E7    89040E         mov dword ptr ds:[esi+ecx],eax
00BE45EA    A1 4CF5C000    mov eax,dword ptr ds:[C0F54C]
00BE45EF    391C06         cmp dword ptr ds:[esi+eax],ebx
00BE45F2    75 16          jnz short 00BE460A
00BE45F4    8D85 B4FEFFFF  lea eax,dword ptr ss:[ebp-14C]
00BE45FA    50             push eax
00BE45FB    FF15 0C21C000  call dword ptr ds:[C0210C]                  ; kernel32.LoadLibraryA
00BE4601    8B0D 4CF5C000  mov ecx,dword ptr ds:[C0F54C]
00BE4607    89040E         mov dword ptr ds:[esi+ecx],eax
00BE460A    A1 4CF5C000    mov eax,dword ptr ds:[C0F54C]
00BE460F    391C06         cmp dword ptr ds:[esi+eax],ebx
00BE4612    0F84 2F010000  je 00BE4747                                 ; je改为 jmp,取消硬件断点


///////////////////////////////////////////////////////////////////////////////////////////

bp GetCurrentThreadId

堆栈变化:

00127140   73441E3A  /CALL 到 GetCurrentThreadId 来自 73441E34
00127144   00000001
00127148   73441C1E  返回到 73441C1E 来自 73441DE6
0012714C   73441B64  返回到 73441B64 来自 73441B90

7C82BC6D >  64:A1 18000000 mov eax,dword ptr fs:[18]

0012D650   4B2162EE  /CALL 到 GetCurrentThreadId 来自 MSCTF.4B2162E8

0012D590   77E6CC69  /CALL 到 GetCurrentThreadId 来自 USER32.77E6CC63

0012D488   00BE49AD  /CALL 到 GetCurrentThreadId 来自 00BE49A7     --------> 返回的好时机

///////////////////////////////////////////////////////////////////////////////////////////

00BFC764   /75 1B          jnz short 00BFC781
00BFC766   |FF76 04        push dword ptr ds:[esi+4]
00BFC769   |FF76 08        push dword ptr ds:[esi+8]
00BFC76C   |53             push ebx
00BFC76D   |52             push edx
00BFC76E   |8B90 84000000  mov edx,dword ptr ds:[eax+84]
00BFC774   |3350 78        xor edx,dword ptr ds:[eax+78]
00BFC777   |3350 30        xor edx,dword ptr ds:[eax+30]
00BFC77A   |2BCA           sub ecx,edx
00BFC77C   |FFD1           call ecx                                                      ////进入OEP
00BFC77E   |8945 FC        mov dword ptr ss:[ebp-4],eax
00BFC781   \8B45 FC        mov eax,dword ptr ss:[ebp-4]
00BFC784    5F             pop edi
00BFC785    5E             pop esi
00BFC786    5B             pop ebx
00BFC787    C9             leave
00BFC788    C3             retn


///////////////////////////////////////////////////////////////////////////////////////////



00401099   /EB 27          jmp short packed.004010C2           /// OEP,Dump it
0040109B   |33C0           xor eax,eax
0040109D   |A3 F7204000    mov dword ptr ds:[4020F7],eax
004010A2   |6A 29          push 29
004010A4   |68 0E204000    push packed.0040200E
004010A9   |6A 65          push 65
004010AB   |FF75 08        push dword ptr ss:[ebp+8]
004010AE   |E8 D9010000    call packed.0040128C                        ; jmp to USER32.GetDlgItemTextA
004010B3   |A3 F7204000    mov dword ptr ds:[4020F7],eax
004010B8   |B8 01000000    mov eax,1
004010BD   |E9 89000000    jmp packed.0040114B
004010C2   \6A 00          push 0
004010C4    E8 E1010000    call packed.004012AA                        ; jmp to kernel32.GetModuleHandleA

///////////////////////////////////////////////////////////////////////////////////////////

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (2)
雪    币: 2256
活跃值: (941)
能力值: (RANK:2210 )
在线值:
发帖
回帖
粉丝
2
从脱壳到算法都学习了。
2006-5-7 15:32
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
3
好东西,留着..
2006-5-7 21:03
0
游客
登录 | 注册 方可回帖
返回
//