破解弈城

[ 晴 2011/12/12 12:08 | by 鬼谷军师 ]
| |
好久没玩过弈城了,这次升级,代码做了很大改动。
首先破解双开,一开始破解我走了弯路。
od载入,下断点bp MessageBoxA,F9运行,程序拦截

0012D48C   004FA78F  /CALL 到 MessageBoxA 来自 LiveBadu.004FA789
0012D490   00000000  |hOwner = NULL
0012D494   005F2CAC  |Text = "一个对弈程序正在运行。(不能同时运行一个以上的对弈程序。)
如果没有正在运行的程序,那么可能是系统正在下载中。
如果长时间运行对弈程序,请重新启动计算机,再次进行连接。"
0012D498   01135138  |Title = "弈城TYGEM对弈"
0012D49C   00000030  \Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL


ctrl+f9返回,往上看看,分析一下代码,可以看到跳转语句


004FA76F   .  8BCE          MOV ECX,ESI
004FA771   .  E8 FA150100   CALL LiveBadu.0050BD70(检测双开的函数)
004FA776   .  3AC3          CMP AL,BL(判断返回值)
004FA778   .  75 1A         JNZ SHORT LiveBadu.004FA794(关键跳)
004FA77A   .  8BB6 58020000 MOV ESI,DWORD PTR DS:[ESI+258]
004FA780   .  6A 30         PUSH 30                                  ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
004FA782   .  56            PUSH ESI                                 ; |Title
004FA783   .  68 AC2C5F00   PUSH LiveBadu.005F2CAC                   ; |Text = "一个对弈程序正在运行。(不能同时运行一个以上的对弈程序。)
如果没有正在运行的程序,那么可能是系统正在下载中。
如果长时间运行对弈程序,请重新启动计算机,再次进行连接。"
004FA788   .  53            PUSH EBX                                 ; |hOwner
004FA789   .  FF15 507D5800 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
004FA78F   .  E9 BE030000   JMP LiveBadu.004FAB52


这样,将关键跳转语句004FA778   .  75 1A         JNZ SHORT LiveBadu.004FA794里面的75改成74,保存就可以了。
这里我保存了之后,程序一直提示非法,原因是程序对文件名做了校验。我一开始还以为是关键点找错,又下了CreateMutexA断点,一无所获。
注:程序多开限制主要有以下几种方法
1. FindWindow
2. SetProp
3. Mutex 、Event、Semaphore  , 比如 CreateMutexA
4. FileMapping
5. DLL全局共享区
6. GlobalAddAtom


这里没那么复杂,是我没看清楚。保存的文件名为LiveBaduk.exe即可多开了。否则,程序会自动校验文件名,然后弹出错误对话框,提示程序非法。


我们接着来破解这个限制
重新打开od,载入刚才修改好的那个程序,livebaduk跳转.exe
同样设置断点bp MessageboxA,F9运行,拦截到


0012D32C   00000000  |hOwner = NULL
0012D330   005F2C64  |Text = "Program Version is not Valid Reinstall Plz 2!!"
0012D334   01136520  |Title = "LiveBaduk跳转"
0012D338   00000030  |Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
0012D33C   00000000  \LanguageID = 0 (LANG_NEUTRAL)
0012D340  /0012D478
0012D344  |6C0F9CCB  返回到 MFC42.6C0F9CCB 来自 USER32.MessageBoxA
0012D348  |00000000
0012D34C  |005F2C64  ASCII "Program Version is not Valid Reinstall Plz 2!!"
0012D350  |01136520
0012D354  |00000030
0012D358  |77C01881  MSVCRT._mbscmp
0012D35C  |00603A88  LiveBadu.00603A88


ctrl+f9返回到程序领空,查看代码如下:


004FA9BE   .  85C0          TEST EAX,EAX
004FA9C0   .  74 23         JE SHORT LiveBadu.004FA9E5
004FA9C2   .  8B4C24 10     MOV ECX,DWORD PTR SS:[ESP+10]
004FA9C6   .  3959 F8       CMP DWORD PTR DS:[ECX-8],EBX
004FA9C9   .  0F85 8E000000 JNZ LiveBadu.004FAA5D
004FA9CF   .  8B5424 0C     MOV EDX,DWORD PTR SS:[ESP+C]
004FA9D3   .  8BCE          MOV ECX,ESI
004FA9D5   .  52            PUSH EDX
004FA9D6   .  68 80775E00   PUSH LiveBadu.005E7780                   ;  ASCII "WorkDir"
004FA9DB   .  68 F8205D00   PUSH LiveBadu.005D20F8                   ;  ASCII "LiveMain"
004FA9E0   .  E8 F58B0600   CALL
004FA9E5   >  8B4424 18     MOV EAX,DWORD PTR SS:[ESP+18]
004FA9E9   .  8B4C24 14     MOV ECX,DWORD PTR SS:[ESP+14]
004FA9ED   .  50            PUSH EAX
004FA9EE   .  51            PUSH ECX
004FA9EF   .  FFD7          CALL EDI
004FA9F1   .  83C4 08       ADD ESP,8
004FA9F4   .  85C0          TEST EAX,EAX
004FA9F6   .  74 6E         JE SHORT LiveBadu.004FAA66
004FA9F8   .  53            PUSH EBX
004FA9F9   .  53            PUSH EBX
004FA9FA   .  68 642C5F00   PUSH LiveBadu.005F2C64                   ;  ASCII "Program Version is not Valid Reinstall Plz 2!!"
004FA9FF   >  E8 74870600   CALL
004FAA04   .  8D4C24 18     LEA ECX,DWORD PTR SS:[ESP+18]
004FAA08   .  C68424 602A00>MOV BYTE PTR SS:[ESP+2A60],5
004FAA10   .  E8 3D830600   CALL
004FAA15   .  8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14]
004FAA19   .  C68424 602A00>MOV BYTE PTR SS:[ESP+2A60],3
004FAA21   .  E8 2C830600   CALL
004FAA26   .  8D4C24 0C     LEA ECX,DWORD PTR SS:[ESP+C]
004FAA2A   .  C68424 602A00>MOV BYTE PTR SS:[ESP+2A60],2
004FAA32   .  E8 1B830600   CALL
004FAA37   .  8D4C24 10     LEA ECX,DWORD PTR SS:[ESP+10]
004FAA3B   .  C68424 602A00>MOV BYTE PTR SS:[ESP+2A60],1
004FAA43   .  E8 0A830600   CALL
004FAA48   .  8D4C24 20     LEA ECX,DWORD PTR SS:[ESP+20]
004FAA4C   .  889C24 602A00>MOV BYTE PTR SS:[ESP+2A60],BL
004FAA53   .  E8 FA820600   CALL
004FAA58   .  E9 F5000000   JMP LiveBadu.004FAB52
004FAA5D   >  53            PUSH EBX
004FAA5E   .  53            PUSH EBX
004FAA5F   .  68 302C5F00   PUSH LiveBadu.005F2C30                   ;  ASCII "Program Version is not Valid Reinstall Plz 1!!"
004FAA64   .^ EB 99         JMP SHORT LiveBadu.004FA9FF


可以看出,004FA9F6地址是关键点,跳转代码JE SHORT LiveBadu.004FAA66。将74改成75,保存即可。
这样,我们就成功破解了弈城的多开限制,保存为任何文件名都可以运行。
同理,程序内的一些会员限制,比如形势判断功能,同样可以用此法破解,不再赘述。
自言自语[文章] | 评论(2) | 引用(0) | 阅读(12814)
zoooro
2012/04/13 21:31
博主你好 按你这种修改可以达到多开效果但是必须用OD先载入 如果进程中没有程序 反而出现了提示不知道博主有没有注意
鬼谷军师 回复于 2012/04/22 17:28
开个原版再开这个就行了,破解不完整的原因,可以再找跳转修改。
路过
2012/01/26 13:08
您好 能否发下修改版的 谢谢 asd19891108@gmail.com
鬼谷军师 回复于 2012/01/28 18:57
给你发了,但是系统判断是垃圾邮件。
分页: 1/1 第一页 1 最后页
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我