| 
注册时间2009-1-28
阅读权限40
最后登录1970-1-1UID59317 独步武林  
 
 TA的每日心情|  | 无聊 2024-1-15 22:57
 | 
|---|
 签到天数: 3 天 [LV.2]偶尔看看I | 
 
| 无聊下载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:[esi+5C]
 00425D4E                 3899 2C030000                  cmp byte ptr ds:[ecx+32C],bl
 00425D54                 75 41                          jnz short WinSS.00425D97             ; 强制跳过显示注册成功,但游戏的计数器还在继续,等计数器归零游戏就不能玩儿了,等于破解未成功。修改试用次数不是好方法,因为启动时候还有NAG延时,非常讨厌。
 00425D56                 385E 79                        cmp byte ptr ds:[esi+79],bl
 00425D59                 74 0C                          je short WinSS.00425D67
 00425D5B                 8D5424 44                      lea edx,dword ptr ss:[esp+44]
 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:[esi+74]
 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:[esp+44]
 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:[esp+44]
 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:[esp+44]
 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:[eax+40]           ; 真假码比较关键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:[ebp+8]         ; 注册名长度
 0042DFD2                 85C0                           test eax,eax
 0042DFD4                 0F86 A2000000                  jbe WinSS.0042E07C                   ; 检测
 。。。。。。
 0042DFEA                 8038 20                        cmp byte ptr ds:[eax],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:[esp+98]
 0042E256                 884424 13                      mov byte ptr ss:[esp+13],al          ; esp+13由al而来
 。。。。。。
 0042E310                 E8 EBAD0300                    call WinSS.00469100
 0042E315                 8B8C24 C0000000                mov ecx,dword ptr ss:[esp+C0]
 0042E31C                 8A4424 13                      mov al,byte ptr ss:[esp+13]          ; 标志位赋值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:[0],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:[ecx+C]
 00469704                 57                             push edi
 00469705                 8B7C24 0C                      mov edi,dword ptr ss:[esp+C]
 00469709                 3B77 0C                        cmp esi,dword ptr ds:[edi+C]
 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 编辑 ]
 | 
 评分
查看全部评分
 |