首页
社区
课程
招聘
TOM对弈围棋客户端的去“形势判断”功能限制――菜鸟教学[1]
发表于: 2006-1-27 13:59 15643

TOM对弈围棋客户端的去“形势判断”功能限制――菜鸟教学[1]

2006-1-27 13:59
15643

【文章标题】: TOM对弈围棋客户端的去“形势判断”功能限制
【作    者】: laoqian[FCG]
【邮    箱】: -
【主    页】: www.fcgchina.com
【QQ    号】: -
【软件名称】: TOMweiqi.exe
【下载地址】: http://weiqi.tom.com/down/TomWeiqi.exe
【加壳方式】: 无
【编写语言】: VC
【工    具】: OllyDbg1.10 fly, W32DSM
【操作平台】: windows系列
【软件介绍】: TOM对弈围棋客户端
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
       狗年就不打狗了,我们来一个简单的爆破吧!
       本文只适合初学者,高手略过!
       前两天在这里看到一篇【XX围棋客户端的去功能限制】的文章,搞的是新浪围棋,看了有些启发。但是我不用新浪围棋,主要是里面的

人比较赖,我发现TOM对弈围棋里面的人都比较君子!
    遂想到TOM围棋也有限制,不妨拿来看看。
       TOM对弈围棋其他也没什么,只有其中的“形势判断”极为有用,可以省去你自己数目判断的麻烦(――不过对于高手有些多余甚至降

低水平之嫌了)!
    但他有限制,主要是下面2个:
   
    1.在押分对局中使用加倍卡或者在对局中进行最多押分时(比如,一般的9段对局为5000万)押分时,可以使用形势分析功能。
      此限制,就是在观看高手对弈和棋谱时,无法在试下情况下使用“形势判断”。
    2.根据双方协议,本局不能使用形势分析功能。此限制,就是在对弈时,双方比赛前协议不能使用“形势判断”,无法使用“形势判断”


   
    由于分析得知,客户端是有代码的,但是他的出错提示都是加过密的,反汇编是看不到关键点的。那我们就来爆破他实现,工作很简单,

我只是说一下如何入手。其实对于新手破解时最困难的是如何入手,如何最恰当的下断点!
   
    用OllyDbg1.10 打开LiveBaduk.exe,中断在入口,因为没有加壳,因此直接调试,忽略所有异常,取消所有断点。
   
    F9运行,登录帐号,进入大厅!
    由于是联网调试,如果我们选择和其他人对弈时调试,肯定会有调试中断甚至掉线,会影响他人的,还连累自己的分数!那我们就选择观

看棋局进入,再调试,即使被踢出来也无所谓。
    进入某对弈房间观棋,此时切换到od,下断点bp MessageBoxA ,再切换回程序来(btw,od对函数的大小写敏感,开始没注意老是断点设

置不成功,唉)
    点击“形势判断”按钮,假设房主的协议是 “本局不能使用形势分析功能”,此时会中断,出现提示窗口的,但是我当时进的房间是可以

使用,没有中断!不要紧,那我们点击“试下”按钮,进入试下窗口,此时再点击“形势判断”按钮,中断!如下:
   
   
    77D504EA U>  8BFF                 mov edi,edi    ; 我们的bp MessageBoxA 断点,停在这
    77D504EC     55                   push ebp       ;F8一路走
    77D504ED     8BEC                 mov ebp,esp
    77D504EF     833D BC04D777 00     cmp dword ptr ds:[77D704BC],0
    77D504F6     74 24                je short USER32.77D5051C
    77D504F8     64:A1 18000000       mov eax,dword ptr fs:[18]
    77D504FE     6A 00                push 0
    77D50500     FF70 24              push dword ptr ds:[eax+24]
    77D50503     68 240BD777          push USER32.77D70B24
    77D50508     FF15 C812D177        call dword ptr ds:[<&KERNEL32.InterlockedCompa>
    77D5050E     85C0                 test eax,eax
    77D50510     75 0A                jnz short USER32.77D5051C
    77D50512     C705 200BD777 010000>mov dword ptr ds:[77D70B20],1
    77D5051C     6A 00                push 0
    77D5051E     FF75 14              push dword ptr ss:[ebp+14]
    77D50521     FF75 10              push dword ptr ss:[ebp+10]
    77D50524     FF75 0C              push dword ptr ss:[ebp+C]
    77D50527     FF75 08              push dword ptr ss:[ebp+8]
    77D5052A     E8 2D000000          call USER32.MessageBoxExA  ;F8一路走
    77D5052F     5D                   pop ebp
    77D50530     C2 1000              retn 10    ;返回到下面
   
   
  .......
    6C14C8D7     FF7424 10            push dword ptr ss:[esp+10]
    6C14C8DB     50                   push eax
    6C14C8DC     FF7424 10            push dword ptr ss:[esp+10]
    6C14C8E0     51                   push ecx                   ;F8一路走到这,看堆栈窗口如下提示
    6C14C8E1     FF15 D0B5186C        call dword ptr ds:[<&USER32.MessageBoxA>]      ;返回到这里
    6C14C8E7     5E                   pop esi
    6C14C8E8     C2 0C00              retn 0C      ;返回到jmp.&MFC42.#4224
    6C14C8EB     8B4E 20              mov ecx,dword ptr ds:[esi+20]
    6C14C8EE   ^ EB E7                jmp short MFC42.6C14C8D7
    6C14C8F0     E8 4F49FAFF          call MFC42.#2864
    6C14C8F5   ^ E9 EE8AFAFF          jmp MFC42.6C0F53E8
   
    0012CD94   000A09FE  |hOwner = 000A09FE ('摆718房间的棋',class='#32770')
    0012CD98   016157F0  |Text = "在押分对局中使用加倍卡
   
    或者在对局中进行最多押分时(比如,一般的9段对局为5000万)押分时,
   
    可以使用形势分析功能。"
    0012CD9C   00D04F50  |Title = "Tom对弈"
    0012CDA0   00000030  \Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
    0012CDA4   0483A2D0
    0012CDA8   00438FC4  返回到 LiveBadu.00438FC4 来自 <jmp.&MFC42.#4224>
  
  
    00438F60     8B4E 74              mov ecx,dword ptr ds:[esi+74]
    00438F63     8D4424 08            lea eax,dword ptr ss:[esp+8]
    00438F67     50                   push eax
    00438F68     81C1 14050000        add ecx,514
    00438F6E     E8 8D7AFDFF          call LiveBadu.00410A00
    00438F73     8B0D 08065600        mov ecx,dword ptr ds:[560608]
    00438F79     8B81 E0060000        mov eax,dword ptr ds:[ecx+6E0]
    00438F7F     85C0                 test eax,eax
    00438F81     75 52                jnz short LiveBadu.00438FD5     ; jmp,这里就是爆破点
    00438F83     8B46 68              mov eax,dword ptr ds:[esi+68]
    00438F86     85C0                 test eax,eax
    00438F88     75 4B                jnz short LiveBadu.00438FD5    ; jmp,这里也是爆破点
    00438F8A     8D4C24 10            lea ecx,dword ptr ss:[esp+10]
    00438F8E     E8 05270D00          call <jmp.&MFC42.#540>
    00438F93     68 04030000          push 304
    00438F98     8D4C24 14            lea ecx,dword ptr ss:[esp+14]
    00438F9C     C74424 38 01000000   mov dword ptr ss:[esp+38],1
    00438FA4     E8 A5280D00          call <jmp.&MFC42.#4160>
    00438FA9     8B15 00065600        mov edx,dword ptr ds:[560600]   ; LiveBadu.0055FB78
    00438FAF     6A 30                push 30
    00438FB1     8BCE                 mov ecx,esi
    00438FB3     8B82 34020000        mov eax,dword ptr ds:[edx+234]
    00438FB9     50                   push eax
    00438FBA     8B4424 18            mov eax,dword ptr ss:[esp+18]
    00438FBE     50                   push eax
    00438FBF     E8 7A290D00          call <jmp.&MFC42.#4224>      ; 从bp MessageBoxA断点返回到这里程序领空,出现提示窗口!
    00438FC4     C74424 34 FFFFFFFF   mov dword ptr ss:[esp+34],-1
    00438FCC     8D4C24 10            lea ecx,dword ptr ss:[esp+10]
    00438FD0     E9 37010000          jmp LiveBadu.0043910C
    00438FD5     8DBE E8060000        lea edi,dword ptr ds:[esi+6E8]    ;这里,飞向光明!
    00438FDB     8BCF                 mov ecx,edi
    00438FDD     E8 EE89FDFF          call LiveBadu.004119D0
    00438FE2     8D4C24 14            lea ecx,dword ptr ss:[esp+14]
    00438FE6     8D5424 18            lea edx,dword ptr ss:[esp+18]
    00438FEA     85C0                 test eax,eax
    00438FEC     51                   push ecx
    00438FED     8D4424 20            lea eax,dword ptr ss:[esp+20]
    00438FF1     52                   push edx
    00438FF2     8D4C24 28            lea ecx,dword ptr ss:[esp+28]
     .......
     
    来到了程序领空,出现了出错窗口!我们往上看,怎样才能避开这里呢,我们发现了00438F81  jnz short LiveBadu.00438FD5,取消所有

断点,下断点在 00438F7F,重复点击试下窗口的“形势判断”按钮,中断后,我们发现走到这里不跳,我们试着改为jmp,然后F9,“形势判

断”出现了!爆破他吧!
  
  再来看第二个,此时需要进入一个禁用“形势判断”的房间,如果没有,只好自己开房了!
  进入房间后同样重复上面的工作,取消所有断点,下断点bp MessageBoxA,点击“形势判断”按钮,假设房主的协议是 “本局不能使用形势

分析功能”,此时会中断,出现提示窗口的,中断点同上,只是堆栈窗口换了下面:
  
    0012CE64   001E04DE  |hOwner = 001E04DE (class='AfxWnd42',parent=00130698)
    0012CE68   04618710  |Text = "根据双方协议,本局不能使用形势分析功能。"
    0012CE6C   00D04F50  |Title = "Tom对弈"
    0012CE70   00000030  \Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
    0012CE74   0465DCC8
    0012CE78   004F5420  返回到 LiveBadu.004F5420 来自 <jmp.&MFC42.#4224>
   
  F8一路返回到LiveBadu程序领空,如下
    004F539D     90                   nop
    004F539E     90                   nop
    004F539F     90                   nop
    004F53A0     64:A1 00000000       mov eax,dword ptr fs:[0]
    004F53A6     6A FF                push -1
    004F53A8     68 A25C5200          push LiveBadu.00525CA2
    004F53AD     50                   push eax
    004F53AE     A1 08065600          mov eax,dword ptr ds:[560608]
    004F53B3     64:8925 00000000     mov dword ptr fs:[0],esp
    004F53BA     83EC 40              sub esp,40
    004F53BD     55                   push ebp
    004F53BE     56                   push esi
    004F53BF     8BF1                 mov esi,ecx
    004F53C1     57                   push edi
    004F53C2     8B88 E0060000        mov ecx,dword ptr ds:[eax+6E0]
    004F53C8     85C9                 test ecx,ecx
    004F53CA     75 65                jnz short LiveBadu.004F5431    ; jmp,这里就是爆破点
    004F53CC     8B86 9C000000        mov eax,dword ptr ds:[esi+9C]
    004F53D2     85C0                 test eax,eax
    004F53D4     75 5B                jnz short LiveBadu.004F5431   ; jmp,这里就是爆破点
    004F53D6     8B0D 00065600        mov ecx,dword ptr ds:[560600]                  
    004F53DC     8B81 4C040000        mov eax,dword ptr ds:[ecx+44C]
    004F53E2     85C0                 test eax,eax
    004F53E4     75 4B                jnz short LiveBadu.004F5431     ; jmp,这里就是爆破点
    004F53E6     8D4C24 10            lea ecx,dword ptr ss:[esp+10]
    004F53EA     E8 A9620100          call <jmp.&MFC42.#540>
    004F53EF     68 26030000          push 326
    004F53F4     8D4C24 14            lea ecx,dword ptr ss:[esp+14]
    004F53F8     C74424 58 00000000   mov dword ptr ss:[esp+58],0
    004F5400     E8 49640100          call <jmp.&MFC42.#4160>
    004F5405     8B15 00065600        mov edx,dword ptr ds:[560600]               
    004F540B     6A 30                push 30
    004F540D     8BCE                 mov ecx,esi
    004F540F     8B82 34020000        mov eax,dword ptr ds:[edx+234]
    004F5415     50                   push eax
    004F5416     8B4424 18            mov eax,dword ptr ss:[esp+18]
    004F541A     50                   push eax
    004F541B     E8 1E650100          call <jmp.&MFC42.#4224>   ; 从bp MessageBoxA断点返回到这里程序领空,出现提示窗口!
    004F5420     C74424 54 FFFFFFFF   mov dword ptr ss:[esp+54],-1
    004F5428     8D4C24 10            lea ecx,dword ptr ss:[esp+10]
    004F542C     E9 3A020000          jmp LiveBadu.004F566B
    004F5431     8D4C24 28            lea ecx,dword ptr ss:[esp+28]   ;这里,飞向光明!
    004F5435     8DAE AC040000        lea ebp,dword ptr ds:[esi+4AC]
    004F543B     51                   push ecx
    004F543C     8BCD                 mov ecx,ebp
    004F543E     E8 BDB5F1FF          call LiveBadu.00410A00
    004F5443     8B86 C0000000        mov eax,dword ptr ds:[esi+C0]
    004F5449     85C0                 test eax,eax
    004F544B     74 52                je short LiveBadu.004F549F
    004F544D     8B86 24020000        mov eax,dword ptr ds:[esi+224]
    004F5453     85C0                 test eax,eax
    004F5455     74 48                je short LiveBadu.004F549F
    004F5457     8B15 00065600        mov edx,dword ptr ds:[560600]       ; LiveBadu.0055FB78
    004F545D     8B86 98040000        mov eax,dword ptr ds:[esi+498]
    004F5463     8B3D A88A5200        mov edi,dword ptr ds:[<&MSVCRT._mbscmp>]   ; MSVCRT._mbscmp
   
   来到了程序领空,出现了出错窗口!我们往上看,怎样才能避开这里呢,我们发现了004F53CA  jnz short LiveBadu.004F5431,取消所有

断点,下断点在 004F53C8,重复点击“形势判断”按钮,中断后,我们发现走到这里不跳,我们试着改为jmp,然后F9,“形势判断”出现了

!爆破他吧!
  
--------------------------------------------------------------------------------
【总结】
  没什么可总结的,找好api函数断点,跟踪,爆破!主要是给大家一个过程,一个思路!
他是经常升级的,每次要改有些麻烦的!
  
--------------------------------------------------------------------------------
【版权声明】: 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!


[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
最初由 laoqian 发布
【文章标题】: TOM对弈围棋客户端的去“形势判断”功能限制
【作 者】: laoqian[FCG]
【邮 箱】: -
【主 页】: www.fcgchina.com
【QQ 号】: -
........


楼主爱好围棋吗?悄悄问一下...
btw:我喜欢,正申请初段。
2006-1-27 14:58
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
3
曾和一业余五段下过让子棋,号称我有业余初段水平(注意各地水平有差异),但是那是10年前了,我不下围棋好多年了,只是玩!
2006-1-27 15:30
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 laoqian 发布
曾和一业余五段下过让子棋,号称我有业余初段水平(注意各地水平有差异),但是那是10年前了,我不下围棋好多年了,只是玩!


围棋不会,五子棋可以说是无线段。
2006-1-27 16:43
0
雪    币: 172
活跃值: (212)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还是老qian厉害,研究FlexLM大功告成,又搞这个了,学习学习!!!
2006-1-27 19:00
0
雪    币: 219
活跃值: (56)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
学习~~~~
2006-1-27 21:46
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
7
最初由 鸡蛋壳 发布


围棋不会,五子棋可以说是无线段。


有空赐教一下五子棋,鄙人至今还没找到对手呢(仅指业余棋手,呵呵),不过据猜测,和我下的基本都是女的,因此我胜!

狗年交好运,如此破文入精,有些惶恐!其实本来只想放个补丁完事的,一时冲动就多费了些精神写出来了,
2006-1-28 09:34
0
雪    币: 225
活跃值: (146)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
ding 一下 ^_^
2006-1-28 13:08
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
9
dingding
2006-1-28 14:16
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
正好为这个限制伤脑筋,好好学习一下,领教了!
2006-2-6 15:11
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我也下围棋,一般在弈城下,账号:薄荷,段位5d,不过这个段位比tom有水分多了。
2006-2-6 18:26
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
弈城的5d有时感觉就业2甚至业初的样子,tom以前确实很强,现在也有水份了,刚好翻到laoqian的几篇精华帖子,颇有pll621当年的风采(乱盖的),都是k的围棋软件,同好,所以上来灌个水就跑,呵呵。
2006-3-19 18:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
哈哈,我业2,你们要是谁教我学破解,我找个业5,专业也行啊,教你们下指导棋,免费:),要是能教我我把游戏外挂破掉,我送你议程和TOM的游戏币,哈哈
2006-3-27 07:05
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
14
最初由 firmsoul 发布
哈哈,我业2,你们要是谁教我学破解,我找个业5,专业也行啊,教你们下指导棋,免费:),要是能教我我把游戏外挂破掉,我送你议程和TOM的游戏币,哈哈

学破解容易,关键看你要学到什么深度什么水平!还有就是,主要靠自己的修行!
又:我倒是不太下围棋了,俺有个好友很痴迷,给介绍几个高手给他到很是不错――他一定会欣喜若狂!
2006-3-27 10:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
呵呵,棋如其人,都这么大年纪了,脾气性格都定了,棋也就没什么搞头了,我朋友职业3段的都读书去了,我们这种什么都菜的鸟人,还有啥指望啊,呵呵,其实学破解也是因为研究生读得很无聊,正好找样事情做做,唉,昨晚看了一下汇编,那些标志位什么的都忘了差不多了,刚从图书馆借了本API函数和罗云鬓的那本汇编,现在正努力啃着呢,哈哈,用空还望laoqian多多指教啊:)
2006-3-27 12:25
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
16
如果你以前学过汇编,学破解可以说是很容易入门了,俺现在也不会汇编语言,只是看懂几个跳转和标志位什么的,嘿嘿!
2006-3-28 10:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
呵呵,把那东东看了一下,好像是先执行exe文件然后附加进程的,这样的东东怎么研究啊,哦,还自建了一个sghook.dll的文件,是不是要导入一个hook库啊
2006-3-28 12:37
0
游客
登录 | 注册 方可回帖
返回
//