弈城围棋客户端和TOM围棋同出一宗,都是用得韩国TYGEM围棋客户端代码。我比较喜欢这个界面,但是比较头疼的是,每次登录了TOM,便不能再登录弈城,反之亦然,更不用说登录两个TOM或者两个弈城了。
可是我的朋友分布甚广,我却只能每次从两个地方跑来跑去,以前也想着xx了这个限制,可都没空闲。这次放假来了机会。
昨天晚上我试着弄了一下,不行,困倦的我,脑袋已经麻木了,只好在xx论坛发贴求助。但一上午也没见人回帖,只好又亲自操刀解剖这冬冬。
好了,废话不多说,谈谈步骤。
由于是要xx不能同时登录两个客户端的限制,所以先打开一个弈城TYGEM对弈客户端。
因为客户端的出错提示都是加过密的,所以使用静态反汇编看不到关键点,只好用ollydbg再加载一遍。
客户端没有加壳,可以直接调试。
加载完毕后停在入口点,下面是入口点代码:
0050ACAA >/$ 55 PUSH EBP
0050ACAB |. 8BEC MOV EBP,ESP
0050ACAD |. 6A FF PUSH -1
0050ACAF |. 68 F8925300 PUSH LiveBadu.005392F8
0050ACB4 |. 68 36AE5000 PUSH <JMP.&MSVCRT._except_handler3> ; SE 处理程序安装
0050ACB9 |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
0050ACBF |. 50 PUSH EAX
0050ACC0 |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
0050ACC7 |. 83EC 68 SUB ESP,68
0050ACCA |. 53 PUSH EBX
0050ACCB |. 56 PUSH ESI
0050ACCC |. 57 PUSH EDI
忽略所有异常,然后设置断点:bp MessageBoxA(注意:OD大小写敏感)
然后按F9运行,被Olldbg断下。
此处代码是:
77D3E824 > 833D D0D3D677 0>CMP DWORD PTR DS:[77D6D3D0],0
77D3E82B 0F85 542C0100 JNZ USER32.77D51485
77D3E831 6A 00 PUSH 0
77D3E833 FF7424 14 PUSH DWORD PTR SS:[ESP+14]
77D3E837 FF7424 14 PUSH DWORD PTR SS:[ESP+14]
77D3E83B FF7424 14 PUSH DWORD PTR SS:[ESP+14]
77D3E83F FF7424 14 PUSH DWORD PTR SS:[ESP+14]
77D3E843 E8 03000000 CALL USER32.MessageBoxExA
77D3E848 C2 1000 RETN 10
77D3E84B > 55 PUSH EBP
77D3E84C 8BEC MOV EBP,ESP
77D3E84E 6A FF PUSH -1
77D3E850 FF75 18 PUSH DWORD PTR SS:[EBP+18]
77D3E853 FF75 14 PUSH DWORD PTR SS:[EBP+14]
77D3E856 FF75 10 PUSH DWORD PTR SS:[EBP+10]
77D3E859 FF75 0C PUSH DWORD PTR SS:[EBP+C]
77D3E85C FF75 08 PUSH DWORD PTR SS:[EBP+8]
77D3E85F E8 04000000 CALL USER32.MessageBoxTimeoutA
77D3E864 5D POP EBP
77D3E865 C2 1400 RETN 14
此时的堆栈窗口显示:
0012D6E4 0047EE71 /CALL 到 MessageBoxA 来自 LiveBadu.0047EE6B
0012D6E8 00000000 |hOwner = NULL
0012D6EC 0055A8D4 |Text = "一个对弈程序正在运行。(不能同时运行一个以上的对弈程序。)
如果没有正在运行的程序,那么可能是系统正在下载中。
如果长时间运行对弈程序,请重新启动计算机,再次进行连接。"
0012D6F0 00E54A80 |Title = "弈城TYGEM对弈"
0012D6F4 00000030 Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0012D6F8 0055EBC0 LiveBadu.0055EBC0
0012D6FC 0055EBC0 LiveBadu.0055EBC0
打开W32DASM,找到地址0047EE71,正是此处。
向上翻,来到0047EE3A处,有一个跳转:
:0047EE3A 743A je 0047EE76
这个地方就是爆破点了,很简单吧:)
工作已经结束了。看W32Dasm下面显示的偏移地址@Offset 0007EE3Ah in File:LiveBaduk.exe
用UltraEdit打开,找到偏移地址0007EE3A处,看到它所对应的机器码是74,也就是je的机器码。将它修改成jne的机器码75,存盘退出。
再运行一下,已经能同时进若干个对弈客户端了。
拿去分享,结果发现修改过的客户端不能显示服务器人数,大概是爆破点选的不合适,不过不影响使用。
想再一举爆破不能进韩国高手房I的限制,弄了半天才发现,这个限制是设置在服务器上的,除非入侵服务器了。。。。faint,不玩了。