1.内存数据排查
1.1 例-植物大战僵尸
1.2 例-只狼
2.外挂程序编写
3.挂机类自动外挂
4.网络游戏外挂
前言记得小学的时候玩页游把家里电脑弄坏了(怎么回事,页游还能弄坏电脑?),然后我爸拿去重新装了系统,回来之后电脑里有了两个新的单机游戏,植物大战僵尸和大鱼吃小鱼。
那个年代周围的小学生都是赛尔号/奥比岛/洛克王国/天书奇谭/龙之刃/梦幻西游,玩摩尔庄园的小学生说出来都不是九年义务教育的。植物大战僵尸虽然现在看来比较久远,但他的游戏元素却是推生出许多游戏音乐文化,比如Billie Eilish的《bad guy》,节奏简直就是植物大战僵尸的灯 灯 灯 灯 灯灯~了。
当时因为生存模式被虐,在网上找了修改器,可以修改阳光点数,那时候虽然没学计算机专业,但对修改器的运行机制还是有所猜测的,当时小学因为不知道内存这回事,所以是觉得修改的文件中的数据。
这个猜测如今看起来很搞笑,但也不失道理(要开始狡辩了),有些游戏的数据可能是先放在文件中的,在游戏启动之后把文件中的数据读取到游戏的内存区域,所以我们需要先修改数据所在的文件内容,然后启动游戏,但是很多游戏的数据文件是加密的(出大问题,骑马与砍杀就没有加密),我们没办法从文件进行修改,所以需要让游戏进程先把它读到内存,然后从内存修改,然后再退出游戏的时候游戏进程自动把它保存下来,之后也就是这个数据了。
所以综上可以发现有这几类修改对象:
游戏数据在本地未加密文件,直接修改它来修改游戏数据
这一类的代表就是骑马与砍杀,它的角色数据在文档中,可以肆意修改玩家属性,但是不要修改太大,因为数据会溢出。
此外它的游戏数据,如NPC对话,NPC姓名,国家名称,城堡名称都是明文给出的(还是用Excel保存的???),最可怕的是它的内部机制,如兵种上限/士气/围攻时间/酒馆花费等都是明文的,怪不得骑砍会有各种版本。
数据封装,通过修改内存来修改游戏数据
网络游戏,数据在对方服务器,无法直接修改,通过模拟网络请求表单来模拟自己获得游戏物品(看对方服务器逻辑严密程度了)
举几个例子(腾讯游戏全部忽略,这个不在新手教程里面),你正在玩一个网页游戏龙之刃,打死了一个小怪,获得了15银币,这时你的网页需要给服务器发送给你银币数据+15的信息,你可以用浏览器自带的工具开发者调试看看这个数据的格式,然后模仿一个相似的,发送的服务器,比较菜的游戏厂商当然无法完善这方面的逻辑了。(另外我有一个想法,steam在我们玩游戏的时候应该会有一个线程监控我们正在玩什么游戏,所以我们可以监控这个线程发出的网络表单,然后我们自己不断发出,这不是卡套刷满?)
下面开始实战部分,因为不想再下载骑砍,而且这种修改文件的教程在骑砍官网很多,所以我就跳过啦。
一. 内存数据排查游戏作为进程运行在我们的电脑中,所以要修改它的数据我们可以在内存进行搜索修改。
拿植物大战僵尸为例,我们要修改的是他的阳光数量。假如我们现在的阳光值是75,我们需要在内存中查找75的数字。
center">
先用内存工具打开植物大战僵尸的进程。
然后查找25这个数字,下图只找到一个,所以阳光的数据就存储在21BF10C8这个地址了,但很多游戏搜索出来可能不止这一个地址,我们需要将查询的那个道具(阳光)花费掉一点,变成另一个值再次扫描一次才能精准定位。
修改这个地址的数值。
在游戏中查看阳光数量。
是不是太简单了?! 这是因为这个游戏本身设计已经和这个时代脱轨了,如今的游戏制造商不仅要考虑内容,还需要在安全上和高玩斗智斗勇。
接下来再拿一个游戏练练手,就是最近非常火的宫崎英高老贼作品只狼。
Sekiro : Shadows Die Twice作为一个九周目下忍,这款游戏真的让我知道了死字怎么写。
先来看看我当前的金币,2323。