[教学]用vim做游戏修改器

游戏讨论
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

[教学]用vim做游戏修改器

#1

帖子 xiechy »

呵呵,这个题目夸张了点~首先我们看看游戏修改器是怎么来修改游戏的。

我初中的时候玩仙剑,当时没有现在这么多的方便灵巧的修改器,最好用的也就是game master了吧,还有什么fpe之类的吧。不过我只用过pctools,而且只用了它的二进制编辑功能~

游戏修改器要能够读取游戏的进度(可以是内存中的),可以确定要改的数值在哪里,可以安全的修改~能做到这几步,就是一个合格的修改器了~如果这样说,那么,vim也可以做到哦!
  • 首先,我们打开仙剑,买上20个水果~嘿嘿,不要说这点钱都没有,说,黑脸大个的赏钱哪去了?好,这是可以存档了~
  • 备份进度后,用vim打开刚才的进度,按下:键,进入命令模式。然后输入%!xxd
  • 看到没有,一堆乱码是不是变成了正常的二进制符了?呵呵,别急,保存文档,注意,这个文档现在可不是二进制的了,现在已经是简单的文本文档了~
  • 把水果吃掉一个,依样画葫芦的制作另外一个文本文档,然后嘛,呵呵,比对文本文档最好用的工具是什么?当然是我们的diff命令拉!diff两个文件,很容易的就可以看出不同之处在哪,注意了,仙剑是用的明码储存的,也就是说20个水果,在内存中应该就是14,19个水果16进制就是13,呵呵,这下,很容易就看出哪个数字段是物品了吧?要猜不出来,继续上面的过程~
  • 好了,找到地址段了,现在可以安全的存档文件修改了,嘿嘿,接着是让文本的文档重新变回二进制~同样的,在命令界面:%!xxd -r,就可以让文本重新成为二进制,保存好。提取旧的回忆~嘿嘿,是不是就有很多水果了?
提示一下,如果我没记错,金蚕王的代码是96,吃一个升一级,嘿嘿~~

总结:

1、关键是命令:%!xxd是什么意思

%代表对全文件适用,!代表执行的是外部命令,xxd是以十六进制形式表示的命令行程序。所以合起来就是说:对整个文件,都将二进制代码用十六进制标识出来~

那么:%!xxd -r是什么呢?嘿嘿,r当然是reverse,反向动作拉~

2、那vim是不是可以当做ultraedit来用?

嘿嘿,bingo!以前记得有人问过,有没有可以象ultraedit一样可以进行列选定的工具~远在天边,近在眼前~还记得在visual模式下Ctrl+v的作用么?

好了,不打扰大家玩游戏的时间了~哦,不是改游戏的时间了~[/list]
kelvinhan
帖子: 173
注册时间: 2006-11-30 1:29

#2

帖子 kelvinhan »

学习中,顶 :lol:
thebye85
帖子: 81
注册时间: 2006-12-16 10:19

#3

帖子 thebye85 »

这也行,真是高人 :shock: :shock:
Linux桌面中文网|http://linuxdesktop.cn/
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#4

帖子 eexpress »

给我修改下doom3试试
● 鸣学
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#5

帖子 xiechy »

我不玩fps类~~这只是照着以前pctools的改法罢了~

不过为了负责,我也试过仙剑在dosbox下的修改了~恩,是成功的~96确实是金蚕王~

至于doom3,呵呵ee自己试试吧~本文纯属为了介绍vim的二进制编辑功能而做~
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#6

帖子 xiechy »

玩仙剑,是初一吧,想想现在十年了~~唏嘘~
头像
TheThirdGhost
帖子: 1592
注册时间: 2006-07-23 16:25
来自: 南京

#7

帖子 TheThirdGhost »

好啊。
头像
zmcbb30
帖子: 2717
注册时间: 2006-09-30 0:32
来自: 巴拉特星系第四行星──海尼森

#8

帖子 zmcbb30 »

:em38 :em50 :em50

原理跟金山游侠一样

能直接弄个程序出来就更强了
头可断,血可流,靓女不可不追求
相艾唔好口,够姜就只抽

BARTON 2500+/1536MDDR400
EP8RDA3G/MX4000 128M64bit 8X
DiamondPlus9-6Y080L0-ATA133
Samsung743DF
HiweedDesktop-1.0
头像
skyx
论坛版主
帖子: 9202
注册时间: 2006-12-23 13:46
来自: Azores Islands
联系:

#9

帖子 skyx »

感谢xiechy,感谢ustc 感谢cctv 感谢channel v

可是:
cathay4t 写了:煽动别人打游戏的和买鸦片的没什么两样。
no security measure is worth anything if an attacker has physical access to the machine
头像
TheThirdGhost
帖子: 1592
注册时间: 2006-07-23 16:25
来自: 南京

#10

帖子 TheThirdGhost »

为什么我做的文件用diff结果是没有任何差别,我明明已经吃了两个金王啊。
头像
TheThirdGhost
帖子: 1592
注册时间: 2006-07-23 16:25
来自: 南京

#11

帖子 TheThirdGhost »

原来是开错档了,汗死。
金蚕王的代码在131行,0096 XX00
其中XX代表数目,最大63(99个)
ltkun
帖子: 1340
注册时间: 2006-01-10 19:09

#12

帖子 ltkun »

vim 真是个好东西
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#13

帖子 xiechy »

skyx 写了:感谢xiechy,感谢ustc 感谢cctv 感谢channel v

可是:
cathay4t 写了:煽动别人打游戏的和买鸦片的没什么两样。
呵呵,这个嘛,确实是,我错了,我真的错了,我当时就不该玩,要是我不玩,成绩也不会这么烂,就不会来合肥,不来合肥,就不会进实验室,不进实验室,就不会弄linux,就不会写这篇堕落的文章~~sign~
Robinho
帖子: 22
注册时间: 2007-03-01 15:22
来自: 广州

#14

帖子 Robinho »

存档读不出来了。

我试过就是单单执行 %!xxd ,然后执行 %!xxd -r ,diff两个文件都不同了。

:shock: :shock:
头像
seeghost
帖子: 35
注册时间: 2007-08-16 9:37
来自: 广东东莞

#15

帖子 seeghost »

仙剑仙剑,高二玩仙剑98柔情版,差点哭出来!
之后便一直是她的狂热fans
现在有哪位能在linux下玩上仙剑4的?
回复