吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9514|回复: 44
收起左侧

[调试逆向] DXBALL2 打砖块游戏 简单分析修改

  [复制链接]
spcspcspcspcspc 发表于 2020-9-6 19:42
本帖最后由 spcspcspcspcspc 于 2020-9-9 16:24 编辑

周末闲来无事,偶然发现   [原创]DXBALL2 修改版(含776关) win10完美运行!  好经典的游戏,仿佛回到了当年。。。貌似帖子里的链接失效了上度娘 http://www.downxia.com/downinfo/283775.html 可下载。(感谢网友的提醒,又试了一下,原帖资源依然有效两个地址都能下,游戏是一样的。
哟,大神还制作了好多版本:
11.png

那就省事了,打开 Fairdell HexCmp2 软件,第一个文件选DXBall2.exe,第二个文件选DXBall2 无限命.exe,文件->保存不同部分为文件,输入文件名:无限命.txt,保存
22.png
打开“无限命.txt”发现  00004A50 处 48 代码改为90,打开OD载入DXBall2.exe,ctrl+G 跳转,点offset ,输入00004A50,OK。
33.png
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。
44.png
ALT+G转到偏移量,填写4739,确定。
55.png 66.png 77.png
光标位置修改为FF 05 B8 84 52 00,保存。打开测试会发现开局自带火球了。
--------------------------------------------第一阶段“偷代码”结束----------------------------------------------------------------


同样用比对文件方法找到满天星版代码为00409843     /0F85 310C0000         jnz 0040A47A   和   00409850     /0F85 240C0000         jnz 0040A47A  
就以这两个地址开始分析:
OD载入 跳到00409850地址,向下翻。。。一直翻。。。。忽然眼前一亮:
88.png
00409C7F  |.  83FF 14       cmp edi,0x14                             ;  Switch (cases 0..14)
0~14做判断?14翻译成十进制就是20,来看一看游戏开始时的界面:
bg.jpg
正好20个星星功能块,巧合吗?那么再往下看看:
99.png 00.png
0是life?   1是level?
这就对的上了吧,哈哈!经过一番分类整理,翻译,猜想。。。。。整理成下表:
1_01.png
第一列序号,第二列OD中对应代码,第三列OD中的注释,第4列自己的猜想,第5列官方解释,最后是图标。
开始测试:我用"无限命火球版"进行测试,因为满天星的太多看不请。

00409C8F   直接改为        jmp 00409C96
就是所有星星改为加生命的星星。
a1.png
运行测试,发现所有图标改成了+1,但是功能没改,那么这个跳转应该是图标的代码,还得继续找。。。

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

a2.png
发现了吗,第六行和第八行都是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。
a3.png
打开测试发现不在害怕骷髅头了
--------------------------------------------第二阶段“改星星”结束----------------------------------------------------------------


但是!小球分裂的太多!太多!太多!卡死了。。。还得继续努力!!!
a4.png
打开火球版,祭出神器Cheat Engine,搜索数据1,因为开始就一个小球,慢慢打,吃到分裂球后按“P”键暂停,搜索数据2,然后多找几次找到小球数量的地址0052AEA4
a5.png
多次实验发现这个地址是固定的,又省事啦
回到OD,004072B9   > \E8 02E5FFFF   call DXBall2_.004057C0                   ;  Case C of switch 00407037
就是分裂球的代码位置,记下代码 call  004057C0 ,还有下一行地址 004072BE 。
拖到程序最后,找到空代码的地方:
a6.png
地址为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步。
a7.png
--------------------------------------------第三阶段“限制小球数量”结束----------------------------------------------------------------


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


2.gif


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


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



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

未命名1599639724.png
不知道想看的是哪个画面?欢迎留言讨论!

免费评分

参与人数 17威望 +1 吾爱币 +35 热心值 +15 收起 理由
牢记自己是菜 + 1 谢谢@Thanks!
5omggx + 1 用心讨论,共获提升!
snccwt + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cag3692100 + 1 + 1 热心回复!
optimumplus2016 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
蓝色马蹄莲 + 1 + 1 楼主有空整个挂啊,这游戏超级想看某些画面的
18868195147 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
qiujunjian1 + 1 + 1 谢谢@Thanks!
单身撸破天 + 1 + 1 我很赞同!
xyhanye + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
StarryDream + 1 + 1 热心回复!
哈哈达仁 + 1 + 1 热心回复!
Lucifer_BW + 1 + 1 我很赞同!
skypower12 + 1 + 1 我很赞同!
Dboykey + 1 + 1 谢谢@Thanks!
Nyueyuan + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shdily 发表于 2020-9-6 21:54
好吧,果然修改才是程序员的乐趣,而不是游戏本身
天天涨停天天盈 发表于 2020-9-6 19:59
weidong002 发表于 2020-9-6 19:59
hghghg 发表于 2020-9-6 20:06
程序员的思维也是很独特的  平时生活中就能看出来
Nyueyuan 发表于 2020-9-6 20:17
做的不错,鼓励就一下
whngomj 发表于 2020-9-6 21:07
谢谢分享,学习了.
lxzxcvbnmlx 发表于 2020-9-6 21:28
教程简单明了。谢谢楼主分享
Dboykey 发表于 2020-9-6 21:28
学习了!谢谢楼主!
Natu 发表于 2020-9-6 21:46
哈哈哈哈,程序员的快乐媳妇当然不懂啦
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-23 15:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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