按键精灵找内存基址

 时间:2018-06-27 03:06:35 贡献者:zhangxyfs

导读:有人问怎么自动加血,我板凳帖子里不是有了,读取 血内存地址的代码了吗? 把那份代码,你用两次,第一次读取出来的数值作为 最大血值,再用一次来读取,当前血量。 然后你加个判断

按键精灵找内存基址
按键精灵找内存基址

有人问怎么自动加血,我板凳帖子里不是有了,读取 血内存地址的代码了吗? 把那份代码,你用两次,第一次读取出来的数值作为 最大血值,再用一次来读取,当前血量。

然后你加个判断 if 当前红<最大红*设置的百分比 then 喝药快捷键(有兴趣的同志可以自己用 CALL) ENd if 另外补充。

我一般很少写挂, 。

除非是没挂的游戏 (中 国特色估计着是不可能的)。

都是去买,买一个月 才 30-50.。

虽说有模板,但是自己写光调试都要 N 天。

找基址,找 CALL。

快的一个量要 5 分钟,慢 的半个小时都有可能。

有那闲工夫慢慢写。

不知 道打工已经挣多少了。

因为我在这个区不能再编辑帖子发图了 这里为了使大家能听得懂,所以我用了很多白话。

(貌似有点愧对大学老师。

讲的都很不规范。

俺不是计算机系出来的。

没办法。

)。

我想不到更 简单的方法了。

老鸟看了别喷粪。

认为不好的少唧 唧歪歪。

自己去写个教程。

版版能不能加个精华啊,

写的很辛苦啊~不然没啥动力继续写了不少兄弟一直也很想写模拟挂,但是却不知道如何下手,这里我就带大家从 0 学起,该如何 写模拟挂。

这里我教程重点是偏向于后台运行的模拟挂。

所以向找色这些用的比较少。

其实 我根本不会找色。

我习惯读内存。

其实按键精灵难的就是怎么读内存,会弄内存了, 只要直接把内存地址复制到万能模板里就行了。

最近开始转学 E 语言写内挂, 所以就把万能 模板公开了,全套教程看完,你就能最短时间内写个模拟挂了(你只要把几个参数自己找到 代入就行。

)。

基本上简单游大多数脚本也只有这个水平。

当然我的挂只有简单找怪打怪 功能,没啥变态功能。

因为我都是自己用,没有啥让人激动游戏,可以提起我兴趣去写。

那 些自动任务什么的。

汗。

你找别人吧。

基本要求:具有高中级别的 VB 水平,不需要多高,知道常量,变量,什么是十进制,十六 进制,以及简单流程控制 if do while 是什么就行,还有懂得勾股定理(挂机范围时候用到)。

别说你不懂。

高中就有学。

人教版高一数学,选修(二),这些东西我前一阵还 在教,那些学生都能学额很轻松。

再不行。

自己去看书去。

三个小时就能看完。

看懂前言:说说本教程教学计划: 基础篇: (一) 找内存基址(红和蓝) (二)模拟挂主框架和红蓝自动喝药 (三)读取人物和怪游戏坐标 (内存式) (四)自动找怪,又分成两次教

(1) 游戏前台时候找怪 (2)游戏后台时候找怪 (五)指定范围挂机 进阶篇: (六) 破解验证码(不会汇编的不用学了)关于学习建议:(只适合新手,老鸟别看)1、按键精灵图的就是省事,有现成的东西可以用,所以很多时候不需 要你懂得很多原理,只要懂得在别人的插件基础上,加上自己参数,然 后组合而成。

所以我在讲解过程中,我认为没必要解释的原理就不说, 只要你懂得怎么套公式就行。

除非一些影响你使用的原理,我才讲解, 讲的时候尽量通俗,拿生活例子举例。

有时间把每个原理都搞清楚,这 时间也足够你写好一个不错的模拟挂。

其实这些要搞清楚。

光光一 个 C,没有个一两年的意淫和实践。

谁都不敢说自己完全入门了。

2、大家会发现我的教材大多数在讲内存地址。

因为写后台挂,基本都 要用到内存地址。

知道了地址,你直接把地址复制去我发的代码里面就 能直接用了,按键代码里面,我也加了解释。

当然一些代码我在前面教 程里解释了干嘛用的,后面发的时候就不会再解释了。

由于我电脑上 个月去某网站中毒,结果硬盘废了,所以现在我的代码都不是存货了, 写教程时候临时赶的,没办法一一检测有啥毛病,所以如果有错的话,

希望谅解。

能改的就自己改吧。

3、也许会打击到某些人,但是还是要说。

数学太差的人,也不用 往下看我的教程了,很可能是浪费时间4、完全没有基础的兄弟,在学习教程前。

必须自学一些必备知识。

推 荐教材不是什么 C 语言入门,或者某某入门视频,因为里面有很多我们 根本用不到的东西, 要么太深, 要么太浅。

建议直接拿高中的数学课本。

现在的数学课本里有两个章节专门讲入门级别的 VB,学了后可以进行 简单的编程,学校教这两个单元,也只半个月,每天一节,扣掉练习课 时间,实际上正课时间,就 5 节,总共就 400 分钟教完,而且给学生上 课还讲究一些环节,如果自学就更省了,成人 3 个小时应该够了。

我认 为该书对于新手该掌握的东西写的不错。

这些会了,按键的入门你也就 会了。

5、一定要掌握的东西有:常量,变量,基本流程控制。

其他一些数组, 书本翻翻,简单了解下就行。

游戏里用到多少,根据进度学多少。

6、我有发出来代码的,看完后不要就扔掉,要自己再写一遍,写的时 候不是说把所有字母你默写一遍,我自己都不行。

而是把每行的思路整 理出来。

然后每步骤用到什么代码再去查下,把自己的参量带进去。

后写完在某些地方使用别人插件时候要注意的地方自己标注下 (比方说 是字符型还是什么进制的),坦白说,按键的代码,我自己也不会被, 是用到什么函数,子程序,去搜索下帮助,然后把代码复制进去。

而且 我有一个专门记事本,记录常用的代码格式。

找了一次后,以后再用, 就去整理的资料里面找格式。

毕竟我是学数学的,没空背那么多格式和 代码,没那么多时间花在计算机上。

7、“路漫漫其修远兮”,“艰难困苦玉汝于成”,"只要功夫深,铁杵 磨成针"8、如果我有发辅助工具的,杀毒软件有可能报毒。

因为写这些工具的 E,很多外挂都用他写的,所以很多软件都把这个软件报毒处理,因为 我都是自己用,不是拿去盈利的,没去做什么免杀处理。

而模块我只有 买了一个超级模块的正版,作坊的是破解版(太贵。

买不起。

),所以我 不敢保证我用的程序一定没毒。

所以下载前请自己思考清楚,如果电脑 真的中毒,我不负任何责任。

好,现在开始教程。

首先,要想写挂,必须要知道游戏中的数据是多少,我们才能决定有什 么操作。

所以本节课要解决的内容是---游戏一些简单的数据(红和蓝)。

对于网游而言,用

的肯定是动态内存。

所以现在我们先把原理讲清楚,讲时候我尽量避免少用术语,用通俗的 语言为大家解释。

有的人一直不理解为什么每次血的内存位置是变的, 但是既然是变的, 为什么我们又能通过 固定的程序找到呢? 这里我用以下图表示,并且用一些通俗话解释因此要找游戏的血量, 关键是把路线图中红色的三个不变的数字找到, 也就是基址 1 的地址 (下面就简称基址 1 了),偏移量 1,偏移量 2。

然后根据以下公式得到血量 基址 2=基址 1 内放的数字+偏移量 1 血内存地址=基址 2 内放的数字+偏移量 2 HP 值=血内存地址内放的数字 从上面看到,每次游戏之所以血内存地址会变,关键是因为,每次启动游戏时候,基址 1 内的数字是不同的。

下面我们就以前两天刚公测的游戏《昆仑 OL》为例,找一找血的动态内存地址。

1、首先打开 CE,在设置里面尽量使用内核模式调试器2、点击左上角的电脑图标

3、选中游戏进程,按确定4、可以看到人物的血量是 220,所以输入 220,点首次搜索。

其他用默认5、以下是搜索结果,可以看到结果很多

6、出门让怪砍,使你掉血,然后 CE 在扫描内型下拉框里选择减少的数值

7、搜索完发现结果很多。

8、没事我们多搜索几次,直到出现比较少的数字为止,看现在就一个地址了

9、双击找到的地址,把他加入下面的方框内10、修改描述为 1.内存地址(表示第一次游戏内找到的内存地址),右击地址,选择“查

找写入该地址的代码”

11、以下是结果,并且双击找到的结果12、然后出现如下图片,红色内行写着 ecx+000001e0,这里 ecx 代表二级基址内放的数值, 1e0 代表偏移量 2。

方框内是 CE 帮我们计算好的二级基址内的数值,我们就是需要他。

把 这个数字记下啦。

通过它寻找二级基址的位置

13、点新的搜索,然后输入刚刚找到的二级基址内的数值,并且勾上前面的 16 进制(因为 这个数据是 16 进制),再点击首次搜索(找找看哪个地址内的数值,满足上面这个数字), 得到,如下两个结果,然后双击这两个结果,把他们加入下面的方框内。

并且添加注释第 A 次进游戏得到的可能二级基址。

14、二级基址只有一个,所以这两个结果只有一个是真的,(一般来说第一个是真的地址, 但也不是绝对的。

碰 RP 的话,你也可以直接用第一)所以接下来要判断哪个才是真的二级 基址。

刚刚说过,退到游戏选择人物画面再进游戏,一级基址不变,二级基址不变,但是二 级基址内放的数字变了, 这导致这个时候血的内存地址也变了。

所以下面要做的就是退到人 物选择画面,再进入游戏,通过刚刚方法(1---13 步骤),再找次二级基址,他应该和前一

回找到的二级基址一样。

下面图中我描述为(B 可能的二级基址)的东东,是我第二次搜索得到的可能二级基址 。

比较下两次进游戏得到的二级基址,只有红色的地址是没变的,说明他就是二级基址。

15、找到二级基址后,通过上图的面板你们也发现 二级基址(10822D20 ) = 一级基址的数值() + 偏移 1()所以现在我们要找一级基址的数值 和 偏移 1.我们说过二级基址数值只要进入正式游戏都不不会改变了, 只有进入人物选择画面的时候才 变,下面我们要做的就是跟踪这个二级基址,回到人物选择画面,看看是谁往这个基址内写

入东东~

16、正式进入游戏后,我们发现检测到几个结果,那到底哪个才是真的呢? 我们选择红色那个,因为他有 mov

17、双击这个红色,然后得到如下图。

红色那行写着 eax+ecx*4,这里前面的 eax 代表一级 基址内放的数值,ecx*4 代表偏移量 1。

方框内是 CE 帮我们计算好的一级基址内的数值, 我们就是需要他。

把这个数字记下啦。

通过它寻找一级基址的位置。

同时我们发现 ecx 代表 的是 4(十六进制),4(十六进制)*4=10(十六进制)。

10 就是偏移 1

18、搜索一级基址内的数值 10822D10,看看哪个地址内装的是他。

结果就一个

19、好了现在我们知道所有的东西了,红色部分是无论哪次进游戏都不变的。

找到他们,现 在就能进行找血的内存位置了。

一级基址(012BAB94 ) 二级基址(10822D20 ) = 一级基址的数值(10822D10) 血内存地址(055FCE18) = 二级基址的数值(055FCC38)+ +偏移 1(10) 偏移 2(1e0)下面我们要来检验下我们得到的是否正确,思路是:以下红色部分代表:无论哪次进入游戏都不会变的量基址 1 内放的数字=读取数据(基址 1) 基址 2=基址 1 内放的数字+偏移量 1 血内存地址=基址 2 内放的数字+偏移量 2 基址 2 内放的数字=读取数据(基址 2) HP 值=读取数据(血内存地址)根据以上思路,写成按键精灵的代码如下:

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=&H1010. 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. 一级基址( ) 一级基址的数值() 二级基址的数值() 。

n 级基址( ) = n-1 级基址的数值() n 级基址的数值() + + 偏移 n-1() 偏移 n() + + 偏移 1() 偏移 2() 。

4. 5. 6. 7. 8. 9. . . .二级基址( ) 三级基址( )= =10. 血内存地址() =11. HP=读内存(血内存地址)复制代码用教程一的方法,有的人会发现,他不能返回到人物选择画面,导致无 法获取一级基址。

有的时候用方法(一),其实郁闷点会连二级基址都 找不到。

就像我最近玩的这个 8.12 就要公测的网游《蜀门》,用方法 (一)出现了如下的问题发现搜索不到二级基址

这个时候我们就可以改用方法(二)1、在找到内存地址后,选择扫描此地址的指针(图中 P>18272BD0 是我已经找到的基址,后 面会教大家,如果找到他)

2、选择默认3、快速选不选都可以,但是游戏一定要记得选。

如果时间充裕,"快 速"不用选,更精确

7、扫描中,记住扫描的时候,最好让自己掉血,以防最后追踪不到。

扫描时间有点久的。

8、出来结果了。

9、这个结果其实包含了(二级基址+偏移 2)双击其中一个结果的地址

10、为了寻找符合我们要求格式的二级基址,我们先尝试一个看看~~

11、输入内存地址,点确定。

12、漫长的等待。

13、结果

15、碰 RP 的时候又到了。

两个随便蒙一个。

一般都是蒙第一 个。

记下地址,这个地址就是符合我们格式要求的二级基址

16、双击刚刚我们扫描的哪个可能的(二级基址+偏移 2)17、看图。

这里这个(二级基址+偏移 2),从图上可以看到他是动态的 指向血的内存地址,而具体指到什么位置,是由二级基址内的数字决定 的。

二级基址内数字变了,血的内存地址也变了(这个还不懂,看教 程一,这个原理是一定要懂的。

)所以说这个指针已经动态指向血

的内存地址了。

18、关闭游戏重新启动,CE 载入进程,看看再次启动游戏后,刚刚改的 二级基址+偏移量 2,能否正确显示出正确的血量,如果不可以,可以重 复上面的方法找(一级基址+偏移,但是注意下,后面找一级基址扫描 时候让你填写要指向的地址时候,应该写的是二级基址了,不是血的内 存位置。

)。

如果可以正确显示血量,就说明不用再找一级基址了。

一 般来说要找两次的,这里我是由于已经做过一次,知道找一次就行了。

19、OK,说明正确了。

哪么基址+偏移量就是(0118AAB0+3C0) 检验的代码不发了,自己去教程(一)里找

顺带补充句,这个游戏支持 GDI,所以可以后台找色。