对游戏修改器原理的一些理解
对于游戏修改器原本没什么兴趣,最初产生点想法的是在安装完使命8后发现里面带有的修改器,突然想这个发行商是不可能自带修改器的,所以最有可能的就是破解游戏的那些高人们整的,那么在不改变源代码的情况下制作修改器就变得很有技术性了。
似乎在哪里见过修改器的原理是修改内存,那么修改内存是否可行?学过语言编程的都接触过类和对象,简单的理解可以这么认为,类就相当于人这个概念性的东西,说一个人我们可以知道他有哪些特点,可以做什么等等,但是真要知道这个人长什么样子在哪里做什么,要那么就要看是哪个具体的人了,这个具体的人就可以称之为对象。类是某个事物的概念化,而对象则是类的实例化。在程序中会有很多类,那么要对这些类进行操作,都需要对类进行实例化,而实例化类,就相当于把这个类拿到内存中进行处理,这样,游戏修改器通过改变内存数据就变得相当可行了。
在描述的过程中以类的方法描述似乎有点空洞,那么就以一个具体例子来说明修改内存的可行性。假设在游戏中有人,有车,有直升机,坦克,轰炸机等等,这些都可以看作类,每一个类都有着各自的属性,比如说是动的还是静的,是跑的还是走的,血量是多少等等,而每一个具体的游戏中的人或车都是一个具体的实例,他们的状态在某一时刻都有着属于自己的数据,头的朝向,嘴巴是否张开,是在跑还是在走,血量的多少等等都有着自己特有的数据,这些数据的来源是根据程序本身设定好的方程式以及外部输入设备输入的状态共同计算出来的,那么这些数据的计算都是在内存中进行的,通过内存计算出各个实例的各种状态然后传递给画面处理系统显示出来,那么对于游戏中某些特定的数据是否可以找到相对应的数据保存字段的地址进行修改呢?
显然这是一种可行的方法,通过一款第三方软件金山游侠2002便可以找到那些存储数据的地址,在我们玩游戏的过程中,通过单一变量法来分析某种属性的地址在哪里,比如说玩游戏的过程中生命全满然后保持其他不变将生命值减少然后观察地址中数据哪个发生了变化,便可确定生命值的地址,在制作修改器的时候只要动态的修改这个值使其一直保持全满的状态便可达到生命无限的效果,当然这只是雏形的思路,对于不同问题只要少加变形即可,有的游戏地址并不是固定的,这就需要其他的查找方法来进行确定,而网络游戏则不同,一般网络游戏大部分的计算工作都是在本地机器上进行的,而数据则在服务器上进行保存,那么在进行特定分析后进行伪造封包发送数据给服务器来欺骗服务器则是大部分网络游戏作弊器的思路,而有的简单的游戏作弊器比如连连看之类的则用不到内存,而单单是进行图像数据的分析,进而模拟相应的鼠标键盘事件,从而达到自动化的目的,针对不同的游戏有不同的思路,那么对于学过一些编程语言的人完全可以自己试着做某个游戏的修改器,这对于提高编程思想有很大帮助,这些严谨的逻辑性非常强的玩意儿在玩起来确实是相当有意思的。(天草流)