1. //下一行的目的是获取游戏窗口句柄。。因为下面要用到这个参数
2.
Plugin jzs=Window.MousePoint()
3.
4.
//定义变量
VBS Dim hp base py1 py2 hpjz1 hpjz2
5.
Rem 程序开始
6.
7.
//base,py1,py2 分别表示一级基址的门牌号,偏移1,偏移2
//自己修改,下面的三个参数为你自己的,你就能直接得到你自己游戏的血量多少,请注意所有十六进制的数字前都要加上&H,这样电脑才知道你输入的数字是十六进制的,不然像第二行的py2
不加&H就变成十进制的10,实际上十六进制的10代表的是十进制的16
8.
base=&H012BAB94 9.
py1=&H10
10. py2=&H1e0
11. //hpjz1代表 一级基址内放的数字,下一句话意思是从一级基址内的数据存入hpjz1中.顺带
补充句以下所有Memory.Read32Bit得到的数据都是十六进制 12. Plugin hpjz1=Memory.Read32Bit(jzs,base)
13. //hpjz2代表二级基址内放的数字,hpjz1+py1意思是把基址1内装的数字+偏移1,得到基
址2的门牌号,下一句话意思是,计算出基址2的门牌号,然后从二级基址内读入数据存入hpjz2
中
14. Plugin hpjz2=Memory.Read32Bit(jzs,hpjz1+py1)
15. //hp代表。。。地球人都知道什么意思。。。hpjz2+py2意思是把基址2内装的数字+偏移2,
得到HP内存位置的门牌号,下一句话意思是,计算出HP内存位置的门牌号,就从HP内存地址中
读入数据存入hp中
16. Plugin hp=Memory.Read32Bit(jzs,hpjz2+py2) 17. //防止HP数值不是十进制表示,所以通通给我转成十进制
18. hp=int(hp)
19. //弹出HP是多少的信息框
20. MessageBox hp
复制代码
接着完全关闭游戏,重新登陆,运行脚本看看读取到的血量是多少:
OK,说明我们找到的是正确的。教程(一)到此结束。额。。这个再看不懂的话。。我就米办法了饿。顺带给几个别人写的图文找基址的攻略。。
正式开始教程(二)
在我的上一篇帖子-------从0开始学模拟挂(一)--找内存基址,包含原理, 我给出了内存基址的一些概念,以及找的思路。如果你对这些
还懂,建议你可以先看看教程(一)
基本原理就是:
以下红色部分代表:无论哪次进入游戏都不会变的量
一级基址( )
二级基址( ) = 一级基址的数值() + 偏移1() 血内存地址() = 二级基址的数值() + 偏移2()
更一般点应该是这样:
1.
其中一级基址和 所有的偏移,对于一个游戏而言是固定的。
2. 3.
4. 5.
6. 7. 8.
一级基址( )
二级基址( ) = 一级基址的数值() + 偏移1() 三级基址( ) = 二级基址的数值() + 偏移2()
. 。 。 . 。 。 . 。 。 9.
n级基址( ) = n-1级基址的数值() + 偏移n-1()
10. 血内存地址() = n级基址的数值() + 偏移n()
11. HP=读内存(血内存地址)
复制代码
用教程一的方法,有的人会发现,他不能返回到人物选择画面,导致无法获取一级基址。有的时候用方法(一),其实郁闷点会连二级基址都找不到。就像我最近玩的这个8.12就要公测的网游《蜀门》,用方法
(一)出现了如下的问题
发现搜索不到二级基址
这个时候我们就可以改用方法(二)
1、在找到内存地址后,选择扫描此地址的指针(图中P>18272BD0是我已经找到的基址,后
面会教大家,如果找到他)