邪恶八进制信息安全团队技术讨论组's Archiver

pub!1c 2006-1-29 14:51

[转载]TOM对弈围棋客户端的去“形势判断”功能限制

<P><STRONG>文章作者: laoqian</STRONG></P>
<P><FONT face=宋体>【软件名称】:TOMweiqi.exe<BR>【下载地址】:[url]http://weiqi.tom.com/down/TomWeiqi.exe[/url]<BR>【加壳方式】:无<BR>【编写语言】:VC<BR>【工具】:OllyDbg1.10fly,W32DSM<BR>【操作平台】:windows系列<BR>【软件介绍】:TOM对弈围棋客户端<BR>【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!<BR>--------------------------------------------------------------------------------<BR>【详细过程】<BR>狗年就不打狗了,我们来一个简单的爆破吧!<BR>本文只适合初学者,高手略过!<BR>前两天在这里看到一篇【XX围棋客户端的去功能限制】的文章,搞的是新浪围棋,看了有些启发。但是我不用新浪围棋,主要是里面的<BR><BR>人比较赖,我发现TOM对弈围棋里面的人都比较君子!<BR>遂想到TOM围棋也有限制,不妨拿来看看。<BR>TOM对弈围棋其他也没什么,只有其中的“形势判断”极为有用,可以省去你自己数目判断的麻烦(——不过对于高手有些多余甚至降<BR><BR>低水平之嫌了)!<BR>但他有限制,主要是下面2个:<BR><BR>1.在押分对局中使用加倍卡或者在对局中进行最多押分时(比如,一般的9段对局为5000万)押分时,可以使用形势分析功能。<BR>此限制,就是在观看高手对弈和棋谱时,无法在试下情况下使用“形势判断”。<BR>2.根据双方协议,本局不能使用形势分析功能。此限制,就是在对弈时,双方比赛前协议不能使用“形势判断”,无法使用“形势判断”<BR><BR>。<BR><BR>由于分析得知,客户端是有代码的,但是他的出错提示都是加过密的,反汇编是看不到关键点的。那我们就来爆破他实现,工作很简单,<BR><BR>我只是说一下如何入手。其实对于新手破解时最困难的是如何入手,如何最恰当的下断点!<BR><BR>用OllyDbg1.10打开LiveBaduk.exe,中断在入口,因为没有加壳,因此直接调试,忽略所有异常,取消所有断点。<BR><BR>F9运行,登录帐号,进入大厅!<BR>由于是联网调试,如果我们选择和其他人对弈时调试,肯定会有调试中断甚至掉线,会影响他人的,还连累自己的分数!那我们就选择观<BR><BR>看棋局进入,再调试,即使被踢出来也无所谓。<BR>进入某对弈房间观棋,此时切换到od,下断点bpMessageBoxA,再切换回程序来(btw,od对函数的大小写敏感,开始没注意老是断点设<BR><BR>置不成功,唉)<BR>点击“形势判断”按钮,假设房主的协议是“本局不能使用形势分析功能”,此时会中断,出现提示窗口的,但是我当时进的房间是可以<BR><BR>使用,没有中断!不要紧,那我们点击“试下”按钮,进入试下窗口,此时再点击“形势判断”按钮,中断!如下:<BR><BR><BR>77D504EAU>8BFFmovedi,edi;我们的bpMessageBoxA断点,停在这<BR>77D504EC55pushebp;F8一路走<BR>77D504ED8BECmovebp,esp<BR>77D504EF833DBC04D77700cmpdwordptrds:[77D704BC],0<BR>77D504F67424jeshortUSER32.77D5051C<BR>77D504F864:A118000000moveax,dwordptrfs:[18]<BR>77D504FE6A00push0<BR>77D50500FF7024pushdwordptrds:[eax+24]<BR>77D5050368240BD777pushUSER32.77D70B24<BR>77D50508FF15C812D177calldwordptrds:[<&KERNEL32.InterlockedCompa><BR>77D5050E85C0testeax,eax<BR>77D50510750AjnzshortUSER32.77D5051C<BR>77D50512C705200BD777010000>movdwordptrds:[77D70B20],1<BR>77D5051C6A00push0<BR>77D5051EFF7514pushdwordptrss:[ebp+14]<BR>77D50521FF7510pushdwordptrss:[ebp+10]<BR>77D50524FF750Cpushdwordptrss:[ebp+C]<BR>77D50527FF7508pushdwordptrss:[ebp+8]<BR>77D5052AE82D000000callUSER32.MessageBoxExA;F8一路走<BR>77D5052F5Dpopebp<BR>77D50530C21000retn10;返回到下面<BR><BR><BR>.......<BR>6C14C8D7FF742410pushdwordptrss:[esp+10]<BR>6C14C8DB50pusheax<BR>6C14C8DCFF742410pushdwordptrss:[esp+10]<BR>6C14C8E051pushecx;F8一路走到这,看堆栈窗口如下提示<BR>6C14C8E1FF15D0B5186Ccalldwordptrds:[<&USER32.MessageBoxA>];返回到这里<BR>6C14C8E75Epopesi<BR>6C14C8E8C20C00retn0C;返回到jmp.&MFC42.#4224<BR>6C14C8EB8B4E20movecx,dwordptrds:[esi+20]<BR>6C14C8EE^EBE7jmpshortMFC42.6C14C8D7<BR>6C14C8F0E84F49FAFFcallMFC42.#2864<BR>6C14C8F5^E9EE8AFAFFjmpMFC42.6C0F53E8<BR><BR>0012CD94000A09FE|hOwner=000A09FE('摆718房间的棋',class='#32770')<BR>0012CD98016157F0|Text="在押分对局中使用加倍卡<BR><BR>或者在对局中进行最多押分时(比如,一般的9段对局为5000万)押分时,<BR><BR>可以使用形势分析功能。"<BR>0012CD9C00D04F50|Title="Tom对弈"<BR>0012CDA000000030\Style=MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL<BR>0012CDA40483A2D0<BR>0012CDA800438FC4返回到LiveBadu.00438FC4来自<jmp.&MFC42.#4224><BR><BR><BR>00438F608B4E74movecx,dwordptrds:[esi+74]<BR>00438F638D442408leaeax,dwordptrss:[esp+8]<BR>00438F6750pusheax<BR>00438F6881C114050000addecx,514<BR>00438F6EE88D7AFDFFcallLiveBadu.00410A00<BR>00438F738B0D08065600movecx,dwordptrds:[560608]<BR>00438F798B81E0060000moveax,dwordptrds:[ecx+6E0]<BR>00438F7F85C0testeax,eax<BR>00438F817552jnzshortLiveBadu.00438FD5;jmp,这里就是爆破点<BR>00438F838B4668moveax,dwordptrds:[esi+68]<BR>00438F8685C0testeax,eax<BR>00438F88754BjnzshortLiveBadu.00438FD5;jmp,这里也是爆破点<BR>00438F8A8D4C2410leaecx,dwordptrss:[esp+10]<BR>00438F8EE805270D00call<jmp.&MFC42.#540><BR>00438F936804030000push304<BR>00438F988D4C2414leaecx,dwordptrss:[esp+14]<BR>00438F9CC744243801000000movdwordptrss:[esp+38],1<BR>00438FA4E8A5280D00call<jmp.&MFC42.#4160><BR>00438FA98B1500065600movedx,dwordptrds:[560600];LiveBadu.0055FB78<BR>00438FAF6A30push30<BR>00438FB18BCEmovecx,esi<BR>00438FB38B8234020000moveax,dwordptrds:[edx+234]<BR>00438FB950pusheax<BR>00438FBA8B442418moveax,dwordptrss:[esp+18]<BR>00438FBE50pusheax<BR>00438FBFE87A290D00call<jmp.&MFC42.#4224>;从bpMessageBoxA断点返回到这里程序领空,出现提示窗口!<BR>00438FC4C7442434FFFFFFFFmovdwordptrss:[esp+34],-1<BR>00438FCC8D4C2410leaecx,dwordptrss:[esp+10]<BR>00438FD0E937010000jmpLiveBadu.0043910C<BR>00438FD58DBEE8060000leaedi,dwordptrds:[esi+6E8];这里,飞向光明!<BR>00438FDB8BCFmovecx,edi<BR>00438FDDE8EE89FDFFcallLiveBadu.004119D0<BR>00438FE28D4C2414leaecx,dwordptrss:[esp+14]<BR>00438FE68D542418leaedx,dwordptrss:[esp+18]<BR>00438FEA85C0testeax,eax<BR>00438FEC51pushecx<BR>00438FED8D442420leaeax,dwordptrss:[esp+20]<BR>00438FF152pushedx<BR>00438FF28D4C2428leaecx,dwordptrss:[esp+28]<BR>.......<BR><BR>来到了程序领空,出现了出错窗口!我们往上看,怎样才能避开这里呢,我们发现了00438F81jnzshortLiveBadu.00438FD5,取消所有<BR><BR>断点,下断点在00438F7F,重复点击试下窗口的“形势判断”按钮,中断后,我们发现走到这里不跳,我们试着改为jmp,然后F9,“形势判<BR><BR>断”出现了!爆破他吧!<BR><BR>再来看第二个,此时需要进入一个禁用“形势判断”的房间,如果没有,只好自己开房了!<BR>进入房间后同样重复上面的工作,取消所有断点,下断点bpMessageBoxA,点击“形势判断”按钮,假设房主的协议是“本局不能使用形势<BR><BR>分析功能”,此时会中断,出现提示窗口的,中断点同上,只是堆栈窗口换了下面:<BR><BR>0012CE64001E04DE|hOwner=001E04DE(class='AfxWnd42',parent=00130698)<BR>0012CE6804618710|Text="根据双方协议,本局不能使用形势分析功能。"<BR>0012CE6C00D04F50|Title="Tom对弈"<BR>0012CE7000000030\Style=MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL<BR>0012CE740465DCC8<BR>0012CE78004F5420返回到LiveBadu.004F5420来自<jmp.&MFC42.#4224><BR><BR>F8一路返回到LiveBadu程序领空,如下<BR>004F539D90nop<BR>004F539E90nop<BR>004F539F90nop<BR>004F53A064:A100000000moveax,dwordptrfs:[0]<BR>004F53A66AFFpush-1<BR>004F53A868A25C5200pushLiveBadu.00525CA2<BR>004F53AD50pusheax<BR>004F53AEA108065600moveax,dwordptrds:[560608]<BR>004F53B364:892500000000movdwordptrfs:[0],esp<BR>004F53BA83EC40subesp,40<BR>004F53BD55pushebp<BR>004F53BE56pushesi<BR>004F53BF8BF1movesi,ecx<BR>004F53C157pushedi<BR>004F53C28B88E0060000movecx,dwordptrds:[eax+6E0]<BR>004F53C885C9testecx,ecx<BR>004F53CA7565jnzshortLiveBadu.004F5431;jmp,这里就是爆破点<BR>004F53CC8B869C000000moveax,dwordptrds:[esi+9C]<BR>004F53D285C0testeax,eax<BR>004F53D4755BjnzshortLiveBadu.004F5431;jmp,这里就是爆破点<BR>004F53D68B0D00065600movecx,dwordptrds:[560600]<BR>004F53DC8B814C040000moveax,dwordptrds:[ecx+44C]<BR>004F53E285C0testeax,eax<BR>004F53E4754BjnzshortLiveBadu.004F5431;jmp,这里就是爆破点<BR>004F53E68D4C2410leaecx,dwordptrss:[esp+10]<BR>004F53EAE8A9620100call<jmp.&MFC42.#540><BR>004F53EF6826030000push326<BR>004F53F48D4C2414leaecx,dwordptrss:[esp+14]<BR>004F53F8C744245800000000movdwordptrss:[esp+58],0<BR>004F5400E849640100call<jmp.&MFC42.#4160><BR>004F54058B1500065600movedx,dwordptrds:[560600]<BR>004F540B6A30push30<BR>004F540D8BCEmovecx,esi<BR>004F540F8B8234020000moveax,dwordptrds:[edx+234]<BR>004F541550pusheax<BR>004F54168B442418moveax,dwordptrss:[esp+18]<BR>004F541A50pusheax<BR>004F541BE81E650100call<jmp.&MFC42.#4224>;从bpMessageBoxA断点返回到这里程序领空,出现提示窗口!<BR>004F5420C7442454FFFFFFFFmovdwordptrss:[esp+54],-1<BR>004F54288D4C2410leaecx,dwordptrss:[esp+10]<BR>004F542CE93A020000jmpLiveBadu.004F566B<BR>004F54318D4C2428leaecx,dwordptrss:[esp+28];这里,飞向光明!<BR>004F54358DAEAC040000leaebp,dwordptrds:[esi+4AC]<BR>004F543B51pushecx<BR>004F543C8BCDmovecx,ebp<BR>004F543EE8BDB5F1FFcallLiveBadu.00410A00<BR>004F54438B86C0000000moveax,dwordptrds:[esi+C0]<BR>004F544985C0testeax,eax<BR>004F544B7452jeshortLiveBadu.004F549F<BR>004F544D8B8624020000moveax,dwordptrds:[esi+224]<BR>004F545385C0testeax,eax<BR>004F54557448jeshortLiveBadu.004F549F<BR>004F54578B1500065600movedx,dwordptrds:[560600];LiveBadu.0055FB78<BR>004F545D8B8698040000moveax,dwordptrds:[esi+498]<BR>004F54638B3DA88A5200movedi,dwordptrds:[<&MSVCRT._mbscmp>];MSVCRT._mbscmp<BR><BR>来到了程序领空,出现了出错窗口!我们往上看,怎样才能避开这里呢,我们发现了004F53CAjnzshortLiveBadu.004F5431,取消所有<BR><BR>断点,下断点在004F53C8,重复点击“形势判断”按钮,中断后,我们发现走到这里不跳,我们试着改为jmp,然后F9,“形势判断”出现了<BR><BR>!爆破他吧!<BR><BR>--------------------------------------------------------------------------------<BR>【总结】<BR>没什么可总结的,找好api函数断点,跟踪,爆破!主要是给大家一个过程,一个思路!<BR>他是经常升级的,每次要改有些麻烦的!</FONT><BR></P>

页: [1]
© 1999-2008 EvilOctal Security Team