-
-
[原创]梦幻咖啡VIP v2.2.5 脱Armadillo 3.78壳
-
发表于:
2005-9-16 03:01
7808
-
[原创]梦幻咖啡VIP v2.2.5 脱Armadillo 3.78壳
【破文标题】:梦幻咖啡VIP v2.2.5 脱Armadillo 3.78壳
【破文作者】:KuNgBiM[DFCG]
【作者邮箱】:gb_1227@163.com
【软件名称】:梦幻咖啡VIP v2.2.5简体中文版
【软件大小】:911 KB
【下载地址】:67cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0t1I4z5g2)9J5k6e0p5#2x3#2)9J5k6e0m8Q4x3X3f1&6y4#2)9J5c8X3c8S2K9s2g2S2i4K6u0r3K9h3k6J5j5h3#2W2i4K6u0r3x3e0M7I4x3U0k6Q4y4h3k6V1L8%4N6F1i4K6u0r3x3U0l9H3y4g2)9J5c8U0l9&6i4K6u0r3N6$3M7&6z5e0W2Q4y4h3j5H3z5e0l9&6i4K6u0W2k6i4S2W2
【软件简介】:梦幻西游辅助外挂程序
【加密保护】:Armadillo 3.78 -> Silicon Realms Toolworks
【编译语言】:Microsoft Visual C++ 6.0
【调试环境】:WinXP、PEiD、Ollydbg、LordPE、ImportREC
【破解日期】:2005-09-14
【破解目的】:推广使用Ollydbg手动脱壳
【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
―――――――――――――――――――――――――――――――――
【脱壳过程】:
一、准备工作侦壳:用PEiD查壳,Armadillo 3.78 -> Silicon Realms Toolworks 加壳二、脱壳1.
寻找Magic Jump,避开IAT加密
由于该外挂程序没有使用双进程方式加密,所以我们就可以省去分离父进程的步骤了。
设置Ollydbg忽略所有其它异常选项。并且忽略:C000001E (INVALID LOCK SEQUENCE)
老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。
Ollydbg
载入主程序:
0046C000 > 60
pushad // OD
载入后停在这里
0046C001 E8 00000000
call coffee2_.0046C006
0046C006 5D
pop ebp
0046C007 50
push eax
0046C008 51
push ecx
0046C009 0FCA
bswap edx
0046C00B F7D2
not edx
0046C00D 9C
pushfd
0046C00E F7D2
not edx
0046C010 0FCA
bswap edx
0046C012 EB 0F
jmp short coffee2_.0046C023
0046C014 B9 EB0FB8EB
mov ecx,EBB80FEB
0046C019 07
pop es
命令栏下断:BP GetModuleHandleA+5 后,Shift + F9 运行:
7C80B52E 837D 08 00
cmp dword ptr ss:[
ebp+8],0 //
断在这,注意看堆栈,F9继续!
7C80B532 74 18
je short kernel32.7C80B54C
7C80B534 FF75 08
push dword ptr ss:[
ebp+8]
7C80B537 E8 682D0000
call kernel32.7C80E2A4
7C80B53C 85C0
test eax,
eax
7C80B53E 74 08
je short kernel32.7C80B548
7C80B540 FF70 04
push dword ptr ds:[
eax+4]
7C80B543 E8 F4300000
call kernel32.GetModuleHandleW
7C80B548 5D
pop ebp
7C80B549 C2 0400
retn 4
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
注意看BP GetModuleHandleA+5 时的堆栈变化:
0012CE44 /0012CE7C
0012CE48 |5D175394
返回到 5D175394 来自 kernel32.GetModuleHandleA
0012CE4C |5D1753E0 ASCII
"kernel32.dll"
0012CF04 /0012CF20
0012CF08 |77F45BD8
返回到 SHLWAPI.77F45BD8 来自 kernel32.GetModuleHandleA
0012CF0C |77F4501C ASCII
"KERNEL32.DLL"
0012D718 /0012D780
0012D71C |004517C3
返回到 coffee2_.004517C3 来自 kernel32.GetModuleHandleA
0012D720 |00000000
00128CB4 /0012CF48
00128CB8 |00AEFE91
返回到 00AEFE91 来自 kernel32.GetModuleHandleA
00128CBC |00B03D68 ASCII
"kernel32.dll"
00128CC0 |00B04F30 ASCII
"VirtualAlloc"
00128CB4 /0012CF48
00128CB8 |00AEFEAE
返回到 00AEFEAE 来自 kernel32.GetModuleHandleA
00128CBC |00B03D68 ASCII
"kernel32.dll"
00128CC0 |00B04F24 ASCII
"VirtualFree"
00128A2C /00128CB8
00128A30 |00AD9537
返回到 00AD9537 来自 kernel32.GetModuleHandleA
00128A34 |00128B6C ASCII
"kernel32.dll" ★注意!在这里Alt+F9返回程
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
当堆栈如上变化后,就可以Alt+F9返回程序代码了。
00AD9537 8B0D C890B000
mov ecx,
dword ptr ds:[B090C8] //
返回到这里,取消所有断点
00AD953D 89040E
mov dword ptr ds:[
esi+
ecx],
eax
00AD9540 A1 C890B000
mov eax,
dword ptr ds:[B090C8]
00AD9545 393C06
cmp dword ptr ds:[
esi+
eax],
edi
00AD9548 75 16
jnz short 00AD9560
00AD954A 8D85 B4FEFFFF
lea eax,
dword ptr ss:[
ebp-14C]
00AD9550 50
push eax
00AD9551 FF15 E4E0AF00
call dword ptr ds:[AFE0E4]
; kernel32.LoadLibraryA
00AD9557 8B0D C890B000
mov ecx,
dword ptr ds:[B090C8]
00AD955D 89040E
mov dword ptr ds:[
esi+
ecx],
eax
00AD9560 A1 C890B000
mov eax,
dword ptr ds:[B090C8]
00AD9565 393C06
cmp dword ptr ds:[
esi+
eax],
edi
00AD9568 0F84 AD000000
je 00AD961B
★ Magic Jump ★ // 改为 :jmp 00AD961B
00AD956E 33C9
xor ecx,
ecx
00AD9570 8B03
mov eax,
dword ptr ds:[
ebx]
00AD9572 3938
cmp dword ptr ds:[
eax],
edi
00AD9574 74 06
je short 00AD957C
00AD9576 41
inc ecx
00AD9577 83C0 0C
add eax,0C
00AD957A ^ EB F6
jmp short 00AD9572
00AD957C 8BC1
mov eax,
ecx
00AD957E C1E0 02
shl eax,2
00AD9581 50
push eax
00AD9582 E8 993C0200
call 00AFD220
; jmp to msvcrt.operator new
―――――――――――――――――――――――――――――――――
2
、第2区段内存断点大法,直达OEPAlt+M
查看内存,在401000区段上下“内存访问断点”,F9运行,直接中断在OEP处:
0041C090 55
push ebp //
在这儿用LordPE纠正ImageSize后完全Dump这个进程
0041C091 8BEC
mov ebp,
esp
0041C093 6A FF
push -1
0041C095 68 60FD4100
push coffee2_.0041FD60
0041C09A 68 F4C14100
push coffee2_.0041C1F4
; jmp to msvcrt._except_handler3
0041C09F 64:A1 00000000
mov eax,
dword ptr fs:[0]
0041C0A5 50
push eax
0041C0A6 64:8925 0000000>
mov dword ptr fs:[0],
esp
0041C0AD 83EC 68
sub esp,68
0041C0B0 53
push ebx
0041C0B1 56
push esi
0041C0B2 57
push edi
0041C0B3 8965 E8
mov dword ptr ss:[
ebp-18],
esp
0041C0B6 33DB
xor ebx,
ebx
0041C0B8 895D FC
mov dword ptr ss:[
ebp-4],
ebx
0041C0BB 6A 02
push 2
0041C0BD FF15 64E34100
call dword ptr ds:[41E364]
; msvcrt.__set_app_type
0041C0C3 59
pop ecx
0041C0C4 830D B4B44300 F>
or dword ptr ds:[43B4B4],FFFFFFFF
0041C0CB 830D B8B44300 F>
or dword ptr ds:[43B4B8],FFFFFFFF
0041C0D2 FF15 9CE34100
call dword ptr ds:[41E39C]
; msvcrt.__p__fmode
0041C0D8 8B0D A8B44300
mov ecx,
dword ptr ds:[43B4A8]
0041C0DE 8908
mov dword ptr ds:[
eax],
ecx
0041C0E0 FF15 2CE34100
call dword ptr ds:[41E32C]
; msvcrt.__p__commode三、脱壳文件修复及优化
运行ImportREC 1.6,选择这个进程。把OEP改为0001C090,点IT AutoSearch,某些函数无效,点Show Invalid,鼠标右键选择Trace Level1(Disasm),CUT无效函数后,函数全部有效。FixDump,正常运行!
优化:用LordPE删除区段“.text1”、“.data1”、“.pdata”然后“重建PE”!程序由脱壳后的924 KB变为321 KB!嘿嘿~~!!
--------------------------------------------------------------------------------------------
版权所有(C)2005 KuNgBiM[DFCG] Copyright (C) 2005 KuNgBiM[DFCG]--------------------------------------------------------------------------------------------
UnPacked By KuNgBiM[DFCG]
2005-09-14
18:09:35 AM
附件:UnPacked.coffee.VIP.v2.2.5.rar
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课