标题:初识逆向工程之植物大战僵尸游戏数据修改
目录
2.修改《植物大战僵尸》的存档文件,让游戏账户内有1W金币。
3、扩展——在cede.org上注册账号,用二进制绘制一个昵称
前言
在多年以前,那个时候网络游戏还没有盛行,单机游戏是绝大多数像我一样大孩子们最喜欢的,而且游戏内容确实相比于今天的单机游戏来说制作的很精良。但是很快我们就遇到了一个问题,那就是炫酷的游戏装备需要大量金币去买,或者某个牛逼的游戏技能升级需要消耗钻石,但是游戏账户里并没有那么多金币或钻石。心中痒痒怎么办呢,我就在应用市场搜到了游戏修改器,有了这个应用,我们就可以随心所欲的获取自己想要的游戏技能或装备了。那么这种开挂行为是怎么做到的呢?众所周知,电信号只有两种基本的状态:开启和关闭,用数字来表示的话就是0和1两种状态。现代的计算机和依赖计算机的设备里都用到二进制,一切数据信号、存储介质、消息存档都是二进制的产物。如果此时我们知道了存储数据保存在哪里,并且拥有root权限,在学会一些二进制数据的处理机制,自然就可以随意修改存档信息,成功开挂了。那么今天我就以植物大战僵尸的游戏数据修改为案例,向大家展示一下,二进制在计算机中的应用。
一、工具准备
1、植物大战僵尸安装包
链接:https://pan.baidu.com/s/18tVr_7DI8NaG0_D8kBL7JA
提取码:8y8y
2、用于修改读取和修改16进制文件的工具——Hex Editor Neo
链接:https://pan.baidu.com/s/1XwuSxrJpPWg8IsrWTJ5uxA
提取码:by9n
二、操作内容
1.修改《植物大战僵尸》的存档文件,跳到指定关卡5-1
首先要找到游戏数据的存储位置,一般在:
C:\ProgramData\PopCap Games\PlantsVsZombies\userdata
之后需要进入游戏中,创建两个账户,分别将两个账户通关至不同关卡。如下图,我分别创建两个账户名,一个账户名为2!,一个账户名为3!
然后打开user5.dat和user6.dat文件,进行对比两个账户存储文件内容的不同。
通过对比发现在04列00行,user5为2,user6为1,刚好对应其各自当前关卡数,那么我推测修改该处数据,即可修改账户当前关卡。那么试一试,将此处数据修改为29。
(注:修改完记得保存)
最终重新切换至改账户,发现关卡数正如我推想一般。
2.修改《植物大战僵尸》的存档文件,让游戏账户内有1W金币。
同样按照1的思路,创建两个游戏账户,让两个游戏账户有不同的金币数,然后用打开游戏存档文件,通过对比两个账户存储数据的不同和确切数,定位到游戏金币存储的二进制的位置,通过修改该处数据以完成游戏账户内金币数的更改。
如下:
创建两个账户,通过通关游戏,使其获得不同金币数。
定位游戏金币数的存储位置,发现两个账户在08列00行有所不同,即可确定游戏金币数存储数据在该位置。修改其数据,因为10000的16进制数为2710,很明显这个时候我需要确定另两个数是放在07列,还是09列了,修改两次观察金币数的变化,即可确定出高位所在的位置。
最终结果如下:
3、扩展——在cede.org上注册账号,用二进制绘制一个昵称
这一部分任务是我们最能理解计算机里二进制的工作方式了,通过01的组合可以实现视觉上图形的创建,我建议对计算机二进制工作理解不深入的同学可以好好玩一玩这个小项目。
三、总结
以上就是今天所讲的全部内容了,看似是做了一个破解游戏的项目,但最终我们的目的并不是学会破解游戏,而是为了更加深入地理解二进制在计算机中的工作原理,当然学会破解游戏也挺好的。
后面我会继续更此类的博文,欢迎大家的关注!