首页
社区
课程
招聘
[旧帖] Ventrilo免费版服务端去限制 0.00雪花
发表于: 2008-6-29 02:45 5067

[旧帖] 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

完了跳回原程序流程,完事。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//