游戏内存动态偏移 游戏内存地址不断变化
最近看见太多人询问内存地址的影响和运用方式,我来做个大概的解释吧
内存地址,其实PC的每个操作都会在内存中先存储,接着经CPU处理后返回内存最终显现出来,而内存里有个内存地址,是为了区分各种不同数据的,而每个地址则相对应壹个数据。
网络游戏中,数据也会先存放到内存中,接着进行处理,包括坐标、血量、MANA等,其实全部信息都是在内存中一一存放并等待处理。处理完毕后结局将会返回原来的地址中(当然也有返回到其他的)。
怎么样?经过上面的分析的解释,大家可以明白壹个道理,其实任何数据都是会下载到本地PC上接着经过处理后再返回的(至于返回到网络和返回到本地就看数据的重要性了)包括网页的浏览等,任何在你PC上可以看见的物品必定先存放到本地内存中或硬盘中等待处理后才会显现出来的。内存和外挂:
说到这里当然要给大家举个例子了,就拿网络游戏来说吧。以前的网络游戏很多数据都是在本地PC上进行处理和比对的,例如曾经的精灵,它的游戏币是在本地PC上进行处理的,处理后的结局再返回服务器,这样就导致了当时的刷钱外挂,由于大家可以修改本地PC上的内存地址中的数值,接着再返回给服务器。从以上可以了解单机游戏锁血锁蓝是多么简单的事了吧。由于全部的数据操作都是在本地运行计算的。
当然,还有的外挂是通过改变封包数据来达到效果的。例如魔兽全球加速外挂,比如我现在人物的坐标是0 0接着按照正常速度走的话下一秒坐标是1 1。由于魔兽全球是在本地对人物坐标进行处理,如果只是单一的改变本地游戏坐标的位置,或许你在自己PC上会看见自己一下跑到 3 3的位置了,但实际游戏服务器上的人物还在1 1这个位置,那就毫无意义。大家可以截取发送坐标的封包,修改大家下一秒跨度的数值,给服务器发送我下一秒会在3 3的位置,这时服务器处理后你的人物就在3 3的位置了。当然,整个经过只是改变封包内的数据值,并没有给服务器多发送封包,因此有的人说是加速外挂给游戏带来了压力的说法是错误的。当然,运营商也可以通过检查你的日常数据来判断你是否运用外挂,因此是没有查不出的外挂,只有不愿意查的外挂。
而现在的网络游戏血、经验、等级、金钱等重要数据都是由服务器计算接着返回给客户端(就是大家),而且每次存放血、蓝等信息的内存地址在每次游戏的启动都会变化,在现在来说,修改其数值已经没有任何意义了,由于那只能让你在本地读取的数值不同而已,而真正的数据被存储在了服务器上,你无法修改。然而大家可以通过读取内存地址中的数值来精确大家脚本的计算。脚本和读取内存地址:
例如我要做壹个脚本,需要在血或蓝少于壹个具体的值的时候加血加蓝,这时候大家就可以采用内存地址的读取,由于这种行为可以让脚本以最精确的方法去加血加蓝,而不是去看血条蓝条(其实血条蓝条这时候已经根本不重要)。在按键精灵里
有这么壹个脚本。
VBSWar ReadMemory(内存地址:整数(16进制),类型:0-字节 1-整数 2-长整数,输出值-所读取的内容:长整型变量)实际应用(中间的内存地址为假设):
VBSDuty ReadMemory(&H400000,2,xue)
这句脚本的意思为,&H400000为读取内存地址400000中数值;2为读取类型,为长整数;xue则把读取出来的数值保存到xue这个变量中去。
如果这个400000的地址是用来储存血量的。那大家就可以对xue这个变量来进行判断计算。实际应用如下If xuea and y>b
moveto 300 500
//以上坐标为虚拟,根据游戏不同自己更改,下面内容放入这个游戏里移动的移动方法的脚本
endif
//如果两个坐标都大于大家希望保存的地方,大家就开始给另壹个路线移动
二、游戏内存基址难题
基址的概念相对大,用好几层。就你的难题而已在拿到具体数据的地址后,用何者都一样,由于代码访问的都是对象中的壹个变量,对象中的变量是通过它相对于对象首地址的偏移量来实现的,在汇编代码中应该是“[xxx+wwwwh]”其中xxx为某个寄存器,它存放的就是对象的首地址,就是你要的基址(最底层的基址,先说成基址1)wwww和后面的h表示壹个16进制数,是血量的偏移地址。这个对象的基址一般没用,每次允许几乎是必然会变,还要在找它的基址(基址2)。然而基址2也很也许每次都变,还要找它的基址(基址3),如此下去,一般要找5层左右。
其实你完全没有必要去这么做,由于现在的网游没有壹个是把数据放在客户端上运算的,你的机子只是不断地从服务器上读你的血量而已,你自己改了也就是你自己机子上看着好像多了,其实在服务器上还是那么多,要死还是死,只是在你机子上你会看到你满血倒地而已,没有任何意义。
要是8年前,你研究这个技术在部分网游上还有点用,现在嘛,P用没有。
三、游戏内存基址和偏移
血量地址为例吧
一级基址+偏移1
得
二级基址
二级基址+偏移2
得
三级基址
三级基址+偏移3
得
四级基址(也就是血量地址)
真正的基址和对应的偏移也许多多少,也也许会少多少.看程序定
在不退出游戏的情况下一,二,三,四级基址(血量地址)是不会变化了,当退出游戏再进时,一级基址(最基础的基址)是不变的,但二级或三级基也许会改变,从而使后四级基址跟着改变,因此退出游戏后再进你之前找到的四级基址(血量地址)就不对了.要想重进还能用就要找到一级基址,以及后面基址的偏移.
方式在广海论坛可以找到.
CE难在那呢????
如果是由于找不对地址,那只是你没弄懂方式.这软件并不难用的