PopCap.Seven.Seas.Deluxe 1.13 破解过程
无聊下载popcap的游戏玩儿,经验证【通杀所有PopCap游戏破解补丁】不适合popCAP的这款游戏。折腾了一下午(水平不够啊),注册倒是成功了,可重启还要求注册。
郁闷的去看电视,不死心,睡觉前有翻了会儿PYG以前大师们的教学,搞定。
【软件介绍】:Seven Seas for Windows —锻炼脑力的海盗船之战,是儿童益智游戏。Seven seas—锻炼脑力的海盗船之战。你的船孤零零的飘荡茫茫大海上,四周突然冒出了许多海盗船,怎么办,身为船长的你,是投降还是战斗?!如果战斗,你的船上只有定向放射的炮弹,好了,决定好了,向海盗船开火。海面被等分为许多小四方格。战斗采用回合制,每条船每次只能移动一步,横、斜均可,但是炮弹并不是按你意愿的方向射击,鼠标放在你的船上会出现射击的两个炮弹,如果方向上有海盗船,点击自己的船就可以发射炸掉他们,但是你也失去了一次移动机会。海面上会出现一些旋涡,进去的话可以从另一个漩涡中出来,能够暂时躲开海盗船的追击。该游戏有一定的难度,适合爱动脑子的孩子及大人玩。Pop Cap Games系列游戏之一。
【下载地址】:http://downloads.popcap.com/www/ ... /SevenSeasSetup.exe
愉快中,遂写个过程聊表纪念,也避免后来人走弯路。。。
od载入老规矩查字符串下断;
00425D46 E8 255A0000 call WinSS.0042B770 ; 下断
00425D4B 8B4E 5C mov ecx,dword ptr ds:
00425D4E 3899 2C030000 cmp byte ptr ds:,bl
00425D54 75 41 jnz short WinSS.00425D97 ; 强制跳过显示注册成功,但游戏的计数器还在继续,等计数器归零游戏就不能玩儿了,等于破解未成功。修改试用次数不是好方法,因为启动时候还有NAG延时,非常讨厌。
00425D56 385E 79 cmp byte ptr ds:,bl
00425D59 74 0C je short WinSS.00425D67
00425D5B 8D5424 44 lea edx,dword ptr ss:
00425D5F 68 00674A00 push WinSS.004A6700 ; ASCII "You must register online to continue playing!"
00425D64 52 push edx
00425D65 EB 3A jmp short WinSS.00425DA1
00425D67 8B46 74 mov eax,dword ptr ds:
00425D6A 83F8 02 cmp eax,2
00425D6D 7C 1C jl short WinSS.00425D8B
00425D6F B9 0F000000 mov ecx,0F
00425D74 8D5424 44 lea edx,dword ptr ss:
00425D78 2BC8 sub ecx,eax
00425D7A 51 push ecx
00425D7B 68 EC664A00 push WinSS.004A66EC ; ASCII "%d PLAYS REMAINING"
00425D80 52 push edx
00425D81 E8 9C830300 call WinSS.0045E122 ; 显示还可以玩多少次
00425D86 83C4 0C add esp,0C
00425D89 EB 1E jmp short WinSS.00425DA9
00425D8B 8D4424 44 lea eax,dword ptr ss:
00425D8F 68 D4664A00 push WinSS.004A66D4 ; ASCII "UNREGISTERED VERSION"
00425D94 50 push eax
00425D95 EB 0A jmp short WinSS.00425DA1
00425D97 8D4C24 44 lea ecx,dword ptr ss:
00425D9B 68 BC664A00 push WinSS.004A66BC ; ASCII "THANKS FOR REGISTERING!"
00425DA0 51 push ecx
00425DA1 E8 7C830300 call WinSS.0045E122
改变方法,这次查找"The registration number you entered is not valid for that name.Make sure the name and registration number are entered correctly."
有两处。
00420EDA E8 21B6FEFF call WinSS.0040C500
00420EDF BF F0644A00 mov edi,WinSS.004A64F0 ; ASCII "The registration number you entered is not valid for that name.Make sure the name and registration number are entered correctly."
00420EE4 83C9 FF or ecx,FFFFFFFF
。。。。。。
00420F06 8BC1 mov eax,ecx
00420F08 BE F0644A00 mov esi,WinSS.004A64F0 ; ASCII "The registration number you entered is not valid for that name.Make sure the name and registration number are entered correctly."
所以Ctrl+F9看看。
00421C73 E8 78A4FEFF call WinSS.0040C0F0 ; 读注册名
。。。。。。
00421CA4 E8 47A4FEFF call WinSS.0040C0F0 ; 读假码
。。。。。。
00421CBD FF50 40 call dword ptr ds: ; 真假码比较关键Call
00421CC0 84C0 test al,al ; 经典的标志位比较
00421CC2 75 0E jnz short WinSS.00421CD2 ; 关键跳转
00421CC4 8BCD mov ecx,ebp
经试验,修改关键跳转不成功,程序出错。只要修改标志位才行,修改test al,al 为mov al,1,注册成功,游戏次数到0也没问题,只不过。。。每次重新启动游戏都要注册一次。。。跟进关键call再看看!
0042DED0 6A FF push -1
。。。。。。
0042DFCF 8B45 08 mov eax,dword ptr ss: ; 注册名长度
0042DFD2 85C0 test eax,eax
0042DFD4 0F86 A2000000 jbe WinSS.0042E07C ; 检测
。。。。。。
0042DFEA 8038 20 cmp byte ptr ds:,20 ; 有否空格检测
。。。。。。
0042E03F 3AC2 cmp al,dl ; 比较是否大字符ascii>127
。。。。。。
0042E054 E8 CC160300 call WinSS.0045F725 ; 取注册名每位小写转大写
。。。。。。
0042E0AE E8 3DE0FDFF call WinSS.0040C0F0 ; 读软件名sevenseas
。。。。。。
0042E145 E8 DB150300 call WinSS.0045F725 ; 小写转大写
。。。。。。
0042E1D9 E8 C2650000 call WinSS.004347A0 ; 注册名+OA+SEVENSEAS
。。。。。。
0042E204 E8 77C30300 call WinSS.0046A580
。。。。。。
0042E231 E8 AABF0300 call WinSS.0046A1E0 ;真假码计算比较
。。。。。。
0042E24A E8 B1B40300 call WinSS.00469700
0042E24F 8D8C24 98000000 lea ecx,dword ptr ss:
0042E256 884424 13 mov byte ptr ss:,al ; esp+13由al而来
。。。。。。
0042E310 E8 EBAD0300 call WinSS.00469100
0042E315 8B8C24 C0000000 mov ecx,dword ptr ss:
0042E31C 8A4424 13 mov al,byte ptr ss: ; 标志位赋值esp+13
0042E320 5F pop edi
0042E321 5E pop esi
0042E322 5D pop ebp
0042E323 5B pop ebx
0042E324 64:890D 00000000 mov dword ptr fs:,ecx
0042E32B 81C4 BC000000 add esp,0BC
0042E331 C2 0800 retn 8
0042E256由于长度的问题不好修改,只好跟进上边的call看看。
00469700 56 push esi
00469701 8B71 0C mov esi,dword ptr ds:
00469704 57 push edi
00469705 8B7C24 0C mov edi,dword ptr ss:
00469709 3B77 0C cmp esi,dword ptr ds:
0046970C 74 07 je short WinSS.00469715
0046970E 5F pop edi
0046970F 32C0 xor al,al ; 标志位赋值
00469711 5E pop esi
00469712 C2 0400 retn 4
很明显,修改xor al,al即可。仅仅修改这一处就可以跳过软件注册。
保存。测试通过。
[ 本帖最后由 zaas 于 2009-10-4 01:27 编辑 ] 写得非常详细,学习了 我再给你个关键点 具体怎么断到的我都不记得了 反正是简单F12跟了下 就出来了
搜索ASCII 然后拉到最上方的那串很明显的数串 剩下的你自己研究下
另外 这个公司的东西我们都不这么搞了 有兴趣你看下我前两天发布的POPCAP的一款游戏的绿色版 好的,N大。
我再研究一下,深入研究才能有提高,我的路还有很远。。。 这几天在研究popcap的游戏,刚好看到这篇老文。楼主的思路是正确的,但有一个缺陷,游戏如果运行在从未安装过的机器上,程序读取不到注册表中“SevenSeas”这一项时,代码运行不到楼主修改的地方,仍然会提示没有注册,第2次运行游戏时才能变成已注册。要解决这个问题,还需要进一步修改。 感谢分享过程,学习~~~~
页:
[1]