12558网页游戏私服论坛

 找回密码
 立即注册
游戏开服表 申请开服
游戏名称 游戏描述 开服状态 游戏福利 运营商 游戏链接
攻城掠地-仿官 全新玩法,觉醒武将,觉醒技能 每周新区 经典复古版本,长久稳定 进入游戏
巅峰新版攻 攻城掠地公益服 攻城掠地SF 新兵种、新武将(兵种) 进入游戏
攻城掠地公 散人玩家的天堂 新开 进入游戏
改版攻城掠 上线即可国战PK 稳定新区 全新改版,功能强大 进入游戏
少年江山 高福利高爆率 刚开一秒 江湖水落潜蛟龙 进入游戏
太古封魔录 开服送10亿钻石 福利多多 不用充钱也可升级 进入游戏
神魔之道 签到送元宝 稳定开新区 送豪华签到奖励 进入游戏
神奇三国 统帅三军,招揽名将 免费玩新区 激情国战,征战四方 进入游戏
龙符 三日豪礼领到爽 天天开新区 助你征战无双 进入游戏
王者之师 免费领豪华奖励 免费玩新区 6元送6888元宝 进入游戏
查看: 194|回复: 0

DXBALL2 打砖块游戏 简单分析修改

[复制链接]

63

主题

63

帖子

136

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
136
发表于 2021-2-19 16:51:04 | 显示全部楼层 |阅读模式
周末闲来无事,偶尔发现   [原创]DXBALL2 修改版(含776关) win10完美运行!  好经典的游戏,仿佛回到了当年。。。貌似帖子里的链接失效了上度娘 http://www.downxia.com/downinfo/283775.html 可下载。(感谢网友的提示,又试了一下,原帖资源依然有用两个地址都能下,游戏是一样的。
哟,大神还制作了许多多少版本:


那就省事了,打开 Fairdell HexCmp2 软件,第一个文件选DXBall2.exe,第二个文件选DXBall2 无限命.exe,文件->生存不同部分为文件,输入文件名:无限命.txt,生存

打开“无限命.txt”发现  00004A50 处 48 代码改为90,打开OD载入DXBall2.exe,ctrl+G 跳转,点offset ,输入00004A50,OK。

00405650  |.  48            dec eax   改为了 00405650      90            nop  应该是死亡后减掉生命的代码被nop掉了。
同样的操作 找到火球的代码 00405339      FF05 B8845200              inc dword ptr ds:[0x5284B8]


以DXBall2 无限命满天星版.exe为基准加入火球功能,操作如下:
WinHex软件打开无限命满天星版.exe,发现OD的00401000和WinHex的00000400地址为程序开始位置,所以火球地址00405339 减去401000加上400(都是十六进制计算哦!)等于4739。

ALT+G转到偏移量,填写4739,确定。

光标位置修改为FF 05 B8 84 52 00,生存。打开测试会发现开局自带火球了。
--------------------------------------------第一阶段“偷代码”结束----------------------------------------------------------------


同样用比对文件方法找到满天星版代码为00409843     /0F85 310C0000         jnz 0040A47A   和   00409850     /0F85 240C0000         jnz 0040A47A  
就以这两个地址开始分析:
OD载入 跳到00409850地址,向下翻。。。一直翻。。。。突然眼前一亮:

00409C7F  |.  83FF 14       cmp edi,0x14                             ;  Switch (cases 0..14)
0~14做判定?14翻译成十进制就是20,来看一看游戏开始时的界面:

正好20个星星功能块,巧合吗?那么再往下看看:

0是life?   1是level?
这就对的上了吧,哈哈!经过一番分类整理,翻译,猜想。。。。。整理成下表:

第一列序号,第二列OD中对应代码,第三列OD中的注释,第4列自己的猜想,第5列官方解释,最后是图标。
开始测试:我用"无限命火球版"进行测试,因为满天星的太多看不请。

00409C8F   直接改为        jmp 00409C96
就是全部星星改为加生命的星星。

运行测试,发现全部图标改成了+1,但是功能没改,那么这个跳转应该是图标的代码,还得继续找。。。

我猜想功能的代码和图标的应该形式一样,OD重开程序,OD中右键-查找-全部分支。


发现了吗,第六行和第八行都是0~14做判定,第八行 00409C7F 是刚才分析的,那就进第六行看看呗!
同样 00407040 改为      jmp 00407047
运行测试,发现图标啥样的都有,但是功能都是加命了,每吃一个,右上角的挡板多一个,看来找对位置了
分裂星星代码C 位置:004072B9   > \E8 02E5FFFF   call DXBall2_.004057C0                   ;  Case C of switch 00407037
死亡星星代码D 位置 0040734C   > \E8 DFE2FFFF   call DXBall2_.00405630                   ;  Case D of switch 00407037
直接改为 jmp 004072B9 就是死亡改为分裂 
修改子女码:0040734C    E9 68FFFFFF   jmp DXBall2_.004072B9
0040734C-401000+400=674C,WinHex软件打开一阶段中改好的火球满天星版本,ALT+G转到偏移量,674C,确定,改为 E9 68 FF FF FF。

打开测试发现不在害怕骷髅头了
--------------------------------------------第二阶段“改星星”结束----------------------------------------------------------------


但是!小球分裂的太多!太多!太多!卡死了。。。还得继续努力!!!

打开火球版,祭出神器Cheat Engine,搜索数据1,因为开始就一个小球,慢慢打,吃到分裂球后按“P”键停息,搜索数据2,然后多找频频找到小球数量的地址0052AEA4

多次实验发现这个地址是固定的,又省事啦
回到OD,004072B9   > \E8 02E5FFFF   call DXBall2_.004057C0                   ;  Case C of switch 00407037
就是分裂球的代码位置,记下代码 call  004057C0 ,还有下一行地址 004072BE 。
拖到程序最后,找到空代码的地方:

地址为00431536,回到分裂球位置004072B9 改为  jmp 00431536
修改子女码:004072B9     /E9 78A20200   jmp DXBall2_.00431536
00431536处修改代码如下:

00431536        A1 A4AE5200   mov eax,dword ptr ds:[0x52AEA4]            从52AEA4地址加载小球个数。
0043153B       BA 50000000    mov edx,0x50                                            小球数量50个,实际结果为最多50*2=100个,可自行修改数量。
00431540       3BC2                 cmp eax,edx                                            比较数量。        
00431542       0F8F 1B5DFDFF   jg 00407263                 当前小球数量大于50个则跳到火球代码处,否则向下运行。也可以调到别的代码,自行修改。
00431548        E8 7342FDFF      call 004057C0                分裂的第一步用来跳转了,此处来补全分裂代码第1步。
0043154D       E9 6C5DFDFF      jmp 004072BE                跳回到分裂代码第2步。

--------------------------------------------第三阶段“限制小球数量”结束----------------------------------------------------------------


经过一天折腾,发现 4  增强火焰砖块、D 直接死亡、13八球连环,必须改为分裂,
4  增强火焰砖块不改的话会一直分裂,比消除的还快,死循环了。
D 直接死亡必须改。
13八球连环不改的话也是会无限小球直接卡死,也可以增加数量限制,直接改掉更省事。
其他的看自己喜好,表格中标黄的我都改了。





终于写完了,实际在分析调试的时间一不留意各种出错,调试的时间还是多记录,多备份。


媳妇问我:你这样玩游戏还有意思吗?
我:程序员的快乐你不懂!



有网友留言说希望  楼主有空整个挂啊,这游戏超级想看某些画面的
我说个简单的办法吧
打开CE
加载5274E0地址,这个地址是关卡的数值
修改数据就可以跳关


不知道想看的是哪个画面?欢迎留言讨论!
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
楼主热帖
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|12558网页游戏私服论坛 |网站地图

GMT+8, 2024-5-20 03:51 , Processed in 0.148437 second(s), 31 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表