-
-
[旧帖] Ventrilo免费版服务端去限制 0.00雪花
-
发表于: 2008-6-29 02:45 5067
-
【文章标题】: Ventrilo免费版服务端去限制
【文章作者】: Nooby
【作者主页】: 没有
【软件名称】: Ventrilo Server 3.0.2 - Public
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
最近沉迷WOW,想自己建个vent服务器,方便语音聊天。网上找了个免费的服务器端,
The Public version of the server is hard coded to 8 slots per instance, one instance per machine and port 3784.
是对免费版限制的描述,当然在破解过程中发现了一些功能上的删减,但是我的主要目的就是去掉端口和用户数的限制,别的以后再说。
简单到不要再简单,PEiD查一下,Microsoft Visual C++ 6.0,看一下导入表,WS2_32.dll 和kernel32.dll。基本上排除了壳的存在,直接OD。
研究后发现004126F0是一个读配置/按顺序保存配置的函数。还有多处硬编的参数,决定了端口和连接数。为了通用性,我决定依然用同样的配置文件,同样的配置项,来动态改写这些硬编数据,达到去限制的目的。
破解思路:
找一段全0区,在0041AF47这里来个JMP,跳到我们的代码,注意004126F0的调用是讲究次序的,所以为了节省代码量,利用一下它的返回值,以便下一步修改。
0041AF2E . 83C4 04 add esp, 4
0041AF31 > 5E pop esi
0041AF32 . B8 FEFFFFFF mov eax, -2
0041AF37 . 5B pop ebx
0041AF38 . 8B4C24 38 mov ecx, dword ptr [esp+38]
0041AF3C . 64:890D 00000>mov dword ptr fs:[0], ecx
0041AF43 . 83C4 44 add esp, 44
0041AF46 . C3 retn
0041AF47 > E9 97990100 jmp 004348E3
空白处依序执行原来的过程
004348E3 > \68 C80E0000 push 0EC8
004348E8 . 68 CCE54300 push 0043E5CC ; ASCII "Port"
004348ED . 68 00E74300 push 0043E700 ; ASCII "Server"
004348F2 . 8D4C24 1C lea ecx, dword ptr [esp+1C]
004348F6 . E8 F5DDFDFF call 004126F0
然后搜索硬编的0EC8(端口3784),找到若干,记下来,然后写:
004348FB . 66:A3 8CCD410>mov word ptr [41CD8C], ax
00434901 . 66:A3 06CF410>mov word ptr [41CF06], ax
00434907 . 66:A3 B728420>mov word ptr [4228B7], ax
0043490D . 66:A3 A62B420>mov word ptr [422BA6], ax
00434913 . 66:A3 4E33420>mov word ptr [42334E], ax
00434919 . 66:A3 B786420>mov word ptr [4286B7], ax
然后要处理连接数,
0043491F . 6A 08 push 8
00434921 . 68 90944300 push 00439490 ; ASCII "MaxClients"
00434926 . 68 00E74300 push 0043E700 ; ASCII "Server"
0043492B . 8D4C24 1C lea ecx, dword ptr [esp+1C]
0043492F . E8 BCDDFDFF call 004126F0
00434934 . A2 587D4000 mov byte ptr [407D58], al
00434939 . A2 D7F04000 mov byte ptr [40F0D7], al
0043493E . A2 E1774100 mov byte ptr [4177E1], al
00434943 . A2 B5834100 mov byte ptr [4183B5], al
00434948 . A2 D89A4100 mov byte ptr [419AD8], al
0043494D . A2 19D44100 mov byte ptr [41D419], al
00434952 . A2 B1284200 mov byte ptr [4228B1], al
00434957 . A2 97454200 mov byte ptr [424597], al
0043495C . A2 BD864200 mov byte ptr [4286BD], al
完了跳回原程序流程,完事。
【文章作者】: Nooby
【作者主页】: 没有
【软件名称】: Ventrilo Server 3.0.2 - Public
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
最近沉迷WOW,想自己建个vent服务器,方便语音聊天。网上找了个免费的服务器端,
The Public version of the server is hard coded to 8 slots per instance, one instance per machine and port 3784.
是对免费版限制的描述,当然在破解过程中发现了一些功能上的删减,但是我的主要目的就是去掉端口和用户数的限制,别的以后再说。
简单到不要再简单,PEiD查一下,Microsoft Visual C++ 6.0,看一下导入表,WS2_32.dll 和kernel32.dll。基本上排除了壳的存在,直接OD。
研究后发现004126F0是一个读配置/按顺序保存配置的函数。还有多处硬编的参数,决定了端口和连接数。为了通用性,我决定依然用同样的配置文件,同样的配置项,来动态改写这些硬编数据,达到去限制的目的。
破解思路:
找一段全0区,在0041AF47这里来个JMP,跳到我们的代码,注意004126F0的调用是讲究次序的,所以为了节省代码量,利用一下它的返回值,以便下一步修改。
0041AF2E . 83C4 04 add esp, 4
0041AF31 > 5E pop esi
0041AF32 . B8 FEFFFFFF mov eax, -2
0041AF37 . 5B pop ebx
0041AF38 . 8B4C24 38 mov ecx, dword ptr [esp+38]
0041AF3C . 64:890D 00000>mov dword ptr fs:[0], ecx
0041AF43 . 83C4 44 add esp, 44
0041AF46 . C3 retn
0041AF47 > E9 97990100 jmp 004348E3
空白处依序执行原来的过程
004348E3 > \68 C80E0000 push 0EC8
004348E8 . 68 CCE54300 push 0043E5CC ; ASCII "Port"
004348ED . 68 00E74300 push 0043E700 ; ASCII "Server"
004348F2 . 8D4C24 1C lea ecx, dword ptr [esp+1C]
004348F6 . E8 F5DDFDFF call 004126F0
然后搜索硬编的0EC8(端口3784),找到若干,记下来,然后写:
004348FB . 66:A3 8CCD410>mov word ptr [41CD8C], ax
00434901 . 66:A3 06CF410>mov word ptr [41CF06], ax
00434907 . 66:A3 B728420>mov word ptr [4228B7], ax
0043490D . 66:A3 A62B420>mov word ptr [422BA6], ax
00434913 . 66:A3 4E33420>mov word ptr [42334E], ax
00434919 . 66:A3 B786420>mov word ptr [4286B7], ax
然后要处理连接数,
0043491F . 6A 08 push 8
00434921 . 68 90944300 push 00439490 ; ASCII "MaxClients"
00434926 . 68 00E74300 push 0043E700 ; ASCII "Server"
0043492B . 8D4C24 1C lea ecx, dword ptr [esp+1C]
0043492F . E8 BCDDFDFF call 004126F0
00434934 . A2 587D4000 mov byte ptr [407D58], al
00434939 . A2 D7F04000 mov byte ptr [40F0D7], al
0043493E . A2 E1774100 mov byte ptr [4177E1], al
00434943 . A2 B5834100 mov byte ptr [4183B5], al
00434948 . A2 D89A4100 mov byte ptr [419AD8], al
0043494D . A2 19D44100 mov byte ptr [41D419], al
00434952 . A2 B1284200 mov byte ptr [4228B1], al
00434957 . A2 97454200 mov byte ptr [424597], al
0043495C . A2 BD864200 mov byte ptr [4286BD], al
完了跳回原程序流程,完事。
赞赏
他的文章
看原图
赞赏
雪币:
留言: