nisila 发表于 2017-10-3 02:52

某网游客户端dll破解 + 脱壳(Aspack壳)+重定位修正

本帖最后由 nisila 于 2017-10-22 12:13 编辑

【目标程序】:ASPack加壳的GameEX.dll,是某网游客户端中的一个文件,客户端加载它之后,会实现装备属性字符的显示。链接:http://pan.baidu.com/s/1gfisyRp 密码:f550
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:Win2003、Ollydbg、LordPE、ImportREC
【破解背景】:最近在玩一款网游(很老的网游,主要是想怀旧一下),点开每一件装备,都会显示一行绿色的字【XX特制的物品】,看着有点不爽,就想改掉它。OD载入后,查找字符串,简单分析一下就找到了字符串所在位置。
0A5EF595    53            push ebx
0A5EF596    E8 2E870000   call 0A5F7CC9
0A5EF59B    83C4 04         add esp,0x4
0A5EF59E    68 00000000   push 0x0
0A5EF5A3    FF35 A5F96A0A   push dword ptr ds:
0A5EF5A9    8D45 F8         lea eax,dword ptr ss://这里就是关键位置
0A5EF5AC    50            push eax
0A5EF5AD    E8 9EFBFFFF   call 0A5EF150
0A5EF5B2    8B5D F8         mov ebx,dword ptr ss:
然后,对这段代码进行修改,如下:
0A5EF595    53            push ebx
0A5EF596    E8 2E870000   call 0A5F7CC9
0A5EF59B    83C4 04         add esp,0x4
0A5EF59E    68 00000000   push 0x0
0A5EF5A3    FF35 A5F96A0A   push dword ptr ds:
0A5EF5A9    E9 D45D0100   jmp 0A605382
0A5EF5AE    90            nop
0A5EF5AF    90            nop
0A5EF5B0    90            nop
0A5EF5B1    90            nop
0A5EF5B2    8B5D F8         mov ebx,dword ptr ss:
让它跳转到空代码行,然后进行补代码,内容如下:
0A605382    B8 B253600A   mov eax,0A6053B2
0A605387    8945 F8         mov dword ptr ss:,eax
0A60538A    8D45 F8         lea eax,dword ptr ss:


0A6053B2    A1 BA474DCC   mov eax,dword ptr ds:
0A6053B7    D8D6            fcom st(6)
0A6053B9    C6            ???                                    
0A6053BA    B5 C4         mov ch,0xC4
0A6053BC    CE            into
0A6053BD    EF            out dx,eax
0A6053BE    C6            ???                                    
0A6053BF    B7 A1         mov bh,0xA1
0A6053C1    BB 00000000   mov ebx,0x0

改完之后,切换到游戏界面看一下效果,被我改成了“GM特制的物品”了,当然,想要改成什么内容自己写。



至此,破解的部分告一段落。因为这是一个dll,而且还加壳了,没法直接改它,只能将它脱壳。

【脱壳过程】:
一、重定位表RVA + OEP

100E2001 >60            pushad //进入OD后停在这
100E2002    E8 03000000   call GameEX0.100E200A
100E2007- E9 EB045D45   jmp 556B24F7
100E200C    55            push ebp
100E200D    C3            retn

提供一个简便寻找ASPack加壳DLL的重定位处理代码段的方法!
搜索命令序列:

mov ecx,dword ptr ds:
sub ecx,8
shr ecx,1

找到在100E21E2,然后我们在100E21C6下断,F9运行,中断。

100E21B4    8785 99050000   xchg dword ptr ss:,eax
100E21BA    8B95 88040000   mov edx,dword ptr ss:
100E21C0    8B85 91050000   mov eax,dword ptr ss:
100E21C6    2BD0            sub edx,eax
100E21C8    74 79         je XGameEX0.100E2243 //可以在这里改标志位Z=0
100E21CA    8BC2            mov eax,edx
100E21CC    C1E8 10         shr eax,0x10
100E21CF    33DB            xor ebx,ebx
100E21D1    8BB5 9D050000   mov esi,dword ptr ss: //ss:=000DF000
100E21D7    03B5 88040000   add esi,dword ptr ss:
100E21DD    833E 00         cmp dword ptr ds:,0x0
100E21E0    74 61         je XGameEX0.100E2243 //现在进行下面的数据操作
100E21E2    8B4E 04         mov ecx,dword ptr ds: //找到这里
100E21E5    83E9 08         sub ecx,0x8
100E21E8    D1E9            shr ecx,1
100E21EA    8B3E            mov edi,dword ptr ds:
100E21EC    03BD 88040000   add edi,dword ptr ss:
100E21F2    83C6 08         add esi,0x8
100E21F5    66:8B1E         mov bx,word ptr ds:
100E21F8    C1EB 0C         shr ebx,0xC
100E21FB    83FB 01         cmp ebx,0x1
100E21FE    74 0C         je XGameEX0.100E220C
100E2200    83FB 02         cmp ebx,0x2
100E2203    74 16         je XGameEX0.100E221B
100E2205    83FB 03         cmp ebx,0x3
100E2208    74 20         je XGameEX0.100E222A
100E220A    EB 2C         jmp XGameEX0.100E2238
100E220C    66:8B1E         mov bx,word ptr ds:
100E220F    81E3 FF0F0000   and ebx,0xFFF
100E2215    66:01041F       add word ptr ds:,ax
100E2219    EB 1D         jmp XGameEX0.100E2238
100E221B    66:8B1E         mov bx,word ptr ds:
100E221E    81E3 FF0F0000   and ebx,0xFFF
100E2224    66:01141F       add word ptr ds:,dx
100E2228    EB 0E         jmp XGameEX0.100E2238
100E222A    66:8B1E         mov bx,word ptr ds:
100E222D    81E3 FF0F0000   and ebx,0xFFF
100E2233    01141F          add dword ptr ds:,edx
100E2236    EB 00         jmp XGameEX0.100E2238
100E2238    66:830E FF      or word ptr ds:,0xFFFF //这里把许多重定位数据变为FFFF ★ NOP掉!
100E223C    83C6 02         add esi,0x2
100E223F^ E2 B4         loopd XGameEX0.100E21F5
100E2241^ EB 9A         jmp XGameEX0.100E21DD //循环处理
100E2243    8B95 88040000   mov edx,dword ptr ss:
100E2249    8BB5 A5050000   mov esi,dword ptr ss:   
100E224F    0BF6            or esi,esi
100E2251    74 11         je XGameEX0.100E2264

当我们中断在100E2243处时,重定位处理完毕。
得到重定位表信息:
RVA=000DF000,大小=100E050C-100DF000=0000150C
这个后面会用到。

现在我们去OEP吧,呵呵。按F9运行,在当前位置下搜索Hex值:61 75,即popad、jnz

100E2415    61            popad //找到这里,下断!
100E2416    75 08         jnz XGameEX0.100E2420
100E2418    B8 01000000   mov eax,0x1
100E241D    C2 0C00         retn 0xC
100E2420    68 00000000   push 0x0
100E2425    C3            retn //飞向光明之巅!

10017FA9/.55            push ebp //这里就是OEP
10017FAA|.8BEC          mov ebp,esp
10017FAC|.53            push ebx
10017FAD|.8B5D 08       mov ebx,
10017FB0|.56            push esi
10017FB1|.8B75 0C       mov esi,
10017FB4|.57            push edi
10017FB5|.8B7D 10       mov edi,
10017FB8|.85F6          test esi,esi
10017FBA|.75 09         jnz XGameEX0.10017FC5

用LordPE选中Ollydbg的loaddll.exe的进程,在下面的列表里选择GameEX.dll,然后完整脱壳,得到dumped.dll。
―――――――――――――――――――――――――――――――――

二、输入表 + PE修正
            
随便从程序找一个API调用,如:

10017EDD|.FF15 7C200210 call dword ptr ds:         ;KERNEL32.GetVersion;

在转存中跟随1002207C,上下看到许多函数地址,很明显的可以找到IAT开始和结束的地址:

开始地址=10022000
结束地址=10022138
运行ImportREC,注意:去掉“使用来自磁盘的PE部首”的选项!
选中Ollydbg的loaddll.exe的进程,然后点“选取DLL”,选择GameEX.dll,填入RVA=00022000、大小=00000138 ,得到输入表。改OEP=00017FA9,FixDump!
用LordPE修正dumped_.dll的重定位表RVA=000DF000、大小=0000150C,保存。
再用LordPE修正dumped_.dll的基址为10000000,保存,重建PE,脱壳完成啦。


sungsung 发表于 2017-11-17 14:41

大神啊
我还是小白 现在想破解下zwcad 2018 目前只知道zwcad.exe启动时会调用ZwLmgrAct.dll,进行注册激活和试用的弹框

想跳过,直接打开
不知道怎么去破解

希望大神指点一二 谢谢

nisila 发表于 2017-10-3 09:24

mmji 发表于 2017-10-3 08:11
MU!~~~果然很老了~很怀念啊,不知道楼主玩的是私服还是公服?

我玩的是私服,一个公益服,这个服很多年了

大洋航海 发表于 2017-10-3 04:27

沙发哦第一次呢,不知道什么游戏

sdaza 发表于 2017-10-3 06:33

看看先。。

夏雨微凉 发表于 2017-10-3 07:00

辛苦了楼主

mmji 发表于 2017-10-3 08:11

MU!~~~果然很老了~很怀念啊,不知道楼主玩的是私服还是公服?

莫语 发表于 2017-10-3 08:17

支持支持

heavyd 发表于 2017-10-3 09:03

这个可是老掉牙了啊。。呵呵

sooboo 发表于 2017-10-3 09:17

和暗黑破坏神武器有点相似呀

骑士 发表于 2017-10-3 09:42

兄弟 ,熟悉易语言吗
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 某网游客户端dll破解 + 脱壳(Aspack壳)+重定位修正