找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1209|回复: 1

手把手教你脱翎风M2server引擎程序

[复制链接]

25

主题

9

回帖

4350

积分

管理员

积分
4350
发表于 2022-11-25 22:41:36 | 显示全部楼层 |阅读模式
手把手教你脱翎风M2server引擎程序上午看到快刀浪子发的一个翎风某年某月某日的m2server引擎程序,很久没动手了,既然是新的,俺也来玩玩吧,全当是过把瘾.有段时间没有这么放松的感觉了,工作实在太忙呀!没做录像,说实在的有点可惜,但实在没有时间,所以我就把我脱壳的过程记了下来,基本可以算得上手把手了,只有你有一点加壳与脱壳的基本常识,按着下面的来做就不会有问题.
说实话,翎风的壳实在太脆弱了,也正因此给了大家提供了更多的学习机会.壳虽然很弱,但是翎风的产品确实很强大.并且它的网络认证功能也是近几年来非常流行的,而且实用,所以说虽然可以把它脱得一丝不挂,但要免费使用它还是要做一些工作的.好在翎风这次发布的版本是300用户免费使用的.(有点感觉象乐剑,这家伙学了一个翎风M2,一开始就搞得300用户免费使用,这对中小私服业主来说应该是完全够用了.)好了,闲话说得太多了,时间宝贵,就让我们开始吧!
只提供给大家学习脱壳之用,请勿用做他途!

所需工具:Ollydbg,peid 0.94,exesc6.5,ImportREC 1.6 这些工具网上都有下载,大家搜索吧,有机会我会上传给脱壳爱好者.

第一步还是探壳EID 探测为 Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks [Overlay]

设置Ollydbg忽略所有的异常选项,用IsDebug 1.4插件去掉Ollydbg的调试器标志。


004C3999 >/$  55            PUSH EBP                                                     ;OD载入后停留在这里
004C399A  |.  8BEC          MOV EBP,ESP
004C399C  |.  6A FF         PUSH -1
004C399E  |.  68 503C4E00   PUSH GameCent.004E3C50
004C39A3  |.  68 80334C00   PUSH GameCent.004C3380                   ;  SE 处理程序安装
004C39A8  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
004C39AE  |.  50            PUSH EAX
004C39AF  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP


一、欺骗代码
下断:BP OpenMutexA,F9运行
7C80EC1B >  8BFF            MOV EDI,EDI  中断在这里
7C80EC1D    55              PUSH EBP
7C80EC1E    8BEC            MOV EBP,ESP

堆栈友好提示:
0013F59C   004A55F1  /CALL 到 OpenMutexA 来自 GameCent.004A55EB
0013F5A0   001F0001  |Access = 1F0001
0013F5A4   00000000  |Inheritable = FALSE
0013F5A8   0013FBDC  \MutexName = "A64:A5B2BDB49"                ;这个很关键,要记下来:13FBDC,后面要用到.

CTRL+G来到 401000
00401000    0000            ADD BYTE PTR DS:[EAX],AL                         ;来到这里.
00401002    0000            ADD BYTE PTR DS:[EAX],AL

写入如下代码右键,"编辑",单个复制过去就可以了,比较省事!)
00401000                 60                              pushad
00401001                 9C                             pushfd
00401002                 68 F0FB1200            push 13FBDC     (13DBDC)
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

00401000处单击右键,选"在此处新建EIP",确定。然后F9运行,断在OpenMutexA 断点处(同上):
7C80EC1B >  8BFF            MOV EDI,EDI
7C80EC1D    55              PUSH EBP
7C80EC1E    8BEC            MOV EBP,ESP

二、避开IAT加密
F2取消断点并Ctrl+G定位到00401000处,取消先前的修改。之后下断点:He GetModuleHandleA ,F9运行:
7C80B529 >  8BFF            MOV EDI,EDI    断在这里.
7C80B52B    55              PUSH EBP
7C80B52C    8BEC            MOV EBP,ESP
7C80B52E    837D 08 00      CMP DWORD PTR SS:[EBP+8],0
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

注意堆栈变化:
0013EC6C   5D175394  /CALL 到 GetModuleHandleA 来自 5D17538E
0013EC70   5D1753E0  \pModule = "kernel32.dll"

0013ED2C   77F45BD8  /CALL 到 GetModuleHandleA 来自 SHLWAPI.77F45BD2
0013ED30   77F4501C  \pModule = "KERNEL32.DLL"

0013F540   004A47ED  /CALL 到 GetModuleHandleA 来自 GameCent.004A47E7
0013F544   00000000  \pModule = NULL

0013BF20   00B7C807  /CALL 到 GetModuleHandleA 来自 00B7C801
0013BF24   00B8D6C8  \pModule = "kernel32.dll"
0013BF28   00B8E67C  ASCII "VirtualAlloc"

0013BF20   00B7C824  /CALL 到 GetModuleHandleA 来自 00B7C81E
0013BF24   00B8D6C8  \pModule = "kernel32.dll"
0013BF28   00B8E670  ASCII "VirtualFree"

0013EA5C   00B85533  /CALL 到 GetModuleHandleA 来自 00B8552D
0013EA60   00000000  \pModule = NULL

0013EA90   00B85184  /CALL 到 GetModuleHandleA 来自 00B85182
0013EA94   00000000  \pModule = NULL

0013DC3C   7C341897  /CALL 到 GetModuleHandleA 来自 7C341891
0013DC40   7C37A298  \pModule = "kernel32.dll"

0013DC7C   7C34193C  /CALL 到 GetModuleHandleA 来自 7C341936
0013DC80   7C37A298  \pModule = "kernel32.dll"

0013D78C   74683BEE  /CALL 到 GetModuleHandleA 来自 74683BE8
0013D790   0013D794  \pModule = "C:\WINDOWS\system32\ntdll.dll"    看到这里注意了,这中间有个跳转比较明显,这是返回的最佳时机.

取消断点,Alt+F9返回到这里:
00DF799B    8B0D E011E200   MOV ECX,DWORD PTR DS:[E211E0]
00DF79A1    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00DF79A4    A1 E011E200     MOV EAX,DWORD PTR DS:[E211E0]
00DF79A9    393C06          CMP DWORD PTR DS:[ESI+EAX],EDI
00DF79AC    75 16           JNZ SHORT 00DF79C4
00DF79AE    8D85 B4FEFFFF   LEA EAX,DWORD PTR SS:[EBP-14C]
00DF79B4    50              PUSH EAX
00DF79B5    FF15 CC80E100   CALL DWORD PTR DS:[E180CC]               ; kernel32.LoadLibraryA
00DF79BB    8B0D E011E200   MOV ECX,DWORD PTR DS:[E211E0]
00DF79C1    89040E          MOV DWORD PTR DS:[ESI+ECX],EAX
00DF79C4    A1 E011E200     MOV EAX,DWORD PTR DS:[E211E0]
00DF79C9    393C06          CMP DWORD PTR DS:[ESI+EAX],EDI
00DF79CC    0F84 AD000000   JE 00DF7A7F         ★这就是大侠们说的那个Magic Jump,把她改成JMP 00DF7A7F
00DF79D2    33C9            XOR ECX,ECX
00DF79D4    8B03            MOV EAX,DWORD PTR DS:[EBX]
00DF79D6    3938            CMP DWORD PTR DS:[EAX],EDI
00DF79D8    74 06           JE SHORT 00DF79E0
00DF79DA    41              INC ECX
00DF79DB    83C0 0C         ADD EAX,0C
00DF79DE  ^ EB F6           JMP SHORT 00DF79D6

三、内存断点大法直抵OEP
Alt+M 查看内存,在401000段 下“内存访问断点”,F9运行:
呵呵,祖国江山一片红..........
00600C24    55              PUSH EBP                           停在这里.用LordPE脱了她吧。脱壳后用lordPE的PE editor修改他的OEP为200C24
00600C25    8BEC            MOV EBP,ESP
00600C27    83C4 F0         ADD ESP,-10
00600C2A    B8 A4076000     MOV EAX,M2Server.006007A4
00600C2F    E8 5C61E0FF     CALL M2Server.00406D90
00600C34    A1 A4966000     MOV EAX,DWORD PTR DS:[6096A4]
00600C39    8B00            MOV EAX,DWORD PTR DS:[EAX]
00600C3B    E8 C0A6E6FF     CALL M2Server.0046B300


四、修复输入表
在不关闭OD的前提下,ImportREC 1.6,选择这个进程 OEP改为:200C24,点 自动查找 IAT, 获取输入表,显示无效指针,并cut掉.复制转储文件(选择你刚脱出来的文件就可以了)

处此就全部结束了,运行一下吧.OK~~~~~~~~~~~~

有4M多,自己找个压缩壳自己压缩一下就行了.

如果你想修改可以用exesc6.5,对delphi程序很有用.不过建议保留原作者版权!

0

主题

1

回帖

1369

积分

沙城争霸

积分
1369
发表于 2024-6-4 00:27:27 | 显示全部楼层
;P;P;P
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|奔叁网 ( 豫ICP备14000454号-1 )保钓联盟成员站

GMT+8, 2024-11-27 00:35 , Processed in 0.099224 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表