PS:12楼的兄弟,不能回到抉择人物画面,那你就换个舆图尝尝,也可以请看下篇,找内存基址方式(二), http://bbs.vrbrothers.com/viewthread.php?tid=94578&extra=page%3D1
有人问怎么自动加血,我板凳帖子里不是有了,读取血内存地址的代码了吗?
把那份代码,你用两次,第一次读掏出来的数值作为最大血值,再用一次来读取,当前血量。
然后你加个判定
if 当前红<最大红*设置的百分比
then 喝药快捷键(有兴致的同道可以自己用CALL)
ENd if
另外补充。。我普通很少写挂,除非是没挂的游戏(中国特点估量着是不可能的)。。都是去买,买一个月才 30-50.。。。虽说有模板,但是自己写光调试都要N天。。找基址,找CALL。快的一个量要5分钟,慢的半个 小时都有可能。。有那闲功夫缓缓写。。不知道打工已经挣多少了。。
因为我在这个区不能再编纂帖子发图了
这里为了使大家能听得懂,所以我用了很多口语。。。(貌似有点愧对大学老师。。。讲的都很不标准。。。 俺不是计算机系出来的。没方法。。)。我想不到更简单的方法了。老鸟看了别喷粪。。认为不好的少唧唧歪歪。 自己去写个教程。版版能不能加个精华啊,写的很辛劳啊~不然没啥能源持续写了
不少兄弟一直也很想写模拟挂,但是却不知道如何下手,这里我就带大家从0学起,该如何写模拟挂。这里我 教程重点是倾向于后台运行的模拟挂。所以向找色这些用的比较少。其实我根本不会找色。。。我习惯读内存。。 其实按键精灵难的就是怎么读内存,会弄内存了,只要直接把内存地址复制到万能模板里就行了。最近开始转学E 语言写内挂,所以就把万能模板公然了,全套教程看完,你就能最短时间内写个模拟挂了(你只要把几个参数自己 找到代入就行。。)。基本上简单游大多数脚本也只有这个水平。当然我的挂只有简单找怪打怪功效,没啥反常功 能。因为我都是自己用,没有啥让人冲动游戏,可以提起我兴趣去写。那些自动义务什么的。。。汗。。你找别人 吧。。。
基础请求:存在高中级别的VB 程度,不须要多高,晓得常量,变量,什么是十进制,十六进制,以及简单流程把持if do while 是什么就行,还有理解勾股定理(挂机范畴时候用到)。别说你不懂。。高中就有学。。人教版高一数学,选修( 二),这些东西我前一阵还在教,那些学生都能学额很轻松。。再不行。。本人去看书去。。三个小时就能看完。 看懂
前言:
说说本教程教养打算:
基础篇:
(一) 找内存基址(红跟蓝)
(二)模拟挂主框架和红蓝自动喝药
(三)读取人物和怪游戏坐标 (内存式)
(四)自动找怪,又分成两次教
(1) 游戏前台时候找怪
(2)游戏后台时候找怪
(五)指定规模挂机
进阶篇:
(六) **验证码(不会汇编的不必学了)
对于学习提议:(只合适新手,老鸟别看)
1、按键精灵图的就是费事,有现成的东西可以用,所以很多时候不需要你懂得很多原理,只要懂得在别人的 插件基础上,加上自己参数,然后组合而成。所以我在讲解进程中,我认为没必要解释的原理就不说 ,
shirt armani,只要你懂得怎么套公式就行。除非一些影响你使用的原理,我才讲授,讲的时候尽量通俗,拿生涯例子举例。有 时间把每个原理都搞清楚,这时间也足够你写好一个不错的模仿挂。实在这些要搞清楚。。。光光一 个C,
dadsbelt,没有个一两年的意淫和实际。谁都不敢说自己完全入门了。
2、大家会发现我的教材大多数在讲内存地址。因为写后盾挂,根本都要用到内存地址。知道了地址,你直接 把地址复制去我发的代码里面就能直接用了,按键代码里面,我也加懂得释。当然一些代码我在前面教程里解释了 干嘛用的,后面发的时候就不会再解释了。 因为我电脑上个月去某网站中毒,成果硬盘废了,所以现在我的代码都不是存货了,写教程时候常设赶的,没措施 逐一检测有啥弊病,所以如果有错的话,盼望体谅。。能改的就自己改吧。
3、兴许会打击到某些人,但是还是要说。。。数学太差的人,也不用往下看我的教程了,很可 能是挥霍时间
4、完整不基本的兄弟,在学习教程前。必需自学一些必备常识。推举教材不是什么C语言入门,或者某某入 门视频,由于里面有良多咱们基本用不到的货色,要么太深,要么太浅。倡议直接拿高中的数学课本。当初的数学 课本里有两个章节专门讲入门级别的VB,学了后可以进行简略的编程,学校教这两个单元,也只半个月,天天一 节,扣掉训练课时间,实际上正课时光,就5节,
97 air max,总共就400分钟教完,而且给学生上课还讲求一些环节,假如自学就更省了,成人3个小时应当够了。我以为 该书对新手该控制的东西写的不错。这些会了,按键的入门你也就会了。
5、一定要把握的东西有:常量,变量,基本流程节制。其他一些数组,书本翻翻,简单了解下就行。游戏里 用到多少,根据进度学多少。
6、我有发出来代码的,看完后不要就扔掉,要自己再写一遍,写的时候不是说把所有字母你默写一遍,我自 己都不行。而是把每行的思路整顿出来。然后每步骤用到什么代码再去查下,把自己的参量带进去。最后写完在某 些地方使用别人插件时候要留神的处所自己标注下(比喻说是字符型仍是什么进制的),坦率说,按键的代码,我 自己也不会被,是用到什么函数,子程序,去搜索下辅助,而后把代码复制进去。而且我有一个专门记事本,记载 常用的代码格式。找了一次后,当前再用,就去收拾的材料里面找格式。究竟我是学数学的,没空背那么多格局和 代码,没那么多时间花在盘算机上。
7、“路漫漫其修远兮”,“艰巨困苦玉汝于成”,"只有工夫深,铁杵磨成针"
8、如果我有发帮助工具的,杀毒软件有可能报毒。因为写这些工具的E,很多wai挂都用他写的,所以很 多软件都把这个软件报毒处理,因为我都是自己用,不是拿去盈利的,没去做什么免杀处置。而模块我只有买了一 个超级模块的正版,作坊的是**版(太贵。买不起。),所以我不敢保障我用的程序必定没毒。所以下载前请自 己思考清晰,如果电脑真的中毒,我不负任何义务。
好,
handbags prada,现在开端教程。首先,要想写挂,必需要知道游戏中的数据是多少,我们才干决议有什么操作。所以本节课要解 决的内容是---游戏一些简单的数据(红和蓝)。对于网游而言,用的确定是动态内存。所以现在我们先把原理讲明白,讲时候我 尽量防止少用术语,用艰深的语言为大家说明。
有的人始终不懂得为什么每次血的内存位置是变的,但是既然是变的,为什么我们又能通过固定的程序找到呢 ? 这里我用以下图表示,并且用一些通俗话解释
下载 (172.32 KB)
2009-8-5 14:08
因而要找游戏的血量,症结是把路线图中红色的三个不变的数字找到,也就是基址1的地址(下面就简称基址 1了),偏移量1,偏移量2。然后根据以下公式得到血量
基址2=基址1内放的数字+偏移量1
血内存地址=基址2内放的数字+偏移量2
HP值=血内存地址内放的数字
从上面看到,每次游戏之所以血内存地址会变,要害是因为,每次启动游戏时候,基址1内的数 字是不同的。
下面我们就以前两天刚公测的游戏《昆仑OL》为例,找一找血的动态内存地址。27 评分人数
、首先翻开CE,在设置里面尽量应用内核模式调试器
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/09080514238ac2b74bb3319f90.jpg[/img] 下载 (65.16 KB)
2009-8-5 14:23
2、点击左上角的电脑图标
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/090805142589943c29d19f94ad.jpg[/img] 下载 (30.68 KB)
2009-8-5 14:25
3、选中游戏过程,按断定
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/090805142796d567b8b512b4bb.jpg[/img] 下载 (29.57 KB)
2009-8-5 14:27
4、能够看到人物的血量是220,所以输入220,点首次搜寻。其余用默认
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/090805143771ee1dd0afef7297.jpg[/img] 下载 (96.37 KB)
2009-8-5 14:37
5、以下是搜索结果,可以看到结果许多
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/09080514412e5900d5259a797e.jpg[/img] 下载 (67.21 KB)
2009-8-5 14:41
6、出门让怪砍,使你掉血,然后CE在扫描内型下拉框里选择减少的数值
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051444292658c3e4b34ea3.jpg[/img] 下载 (49.32 KB)
2009-8-5 14:44
7、搜索完发现结果很多。。。。
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051450d855ccedc9b1e317.jpg[/img] 下载 (97.32 KB)
2009-8-5 14:50
8、没事我们多搜索几回,直到涌现比较少的数字为止,看现在就一个地址了
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/090805145000f8c9d8b524c577.jpg[/img] 下载 (66.57 KB)
2009-8-5 14:50
9、双击找到的地址,把他参加下面的方框内
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051453820fc0a49236b648.jpg[/img] 下载 (63.44 KB)
2009-8-5 14:53
10、修改描述为1.内存地址(表示第一次游戏内找到的内存地址),右击地址,选择“查找写入该地址的 代码”
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051457d22fc5ccd790051f.jpg[/img] 下载 (78.02 KB)
2009-8-5 14:57
11、以下是结果,并且双击找到的结果
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051500e42ad9c2d2ed5da5.jpg[/img] 下载 (26.23 KB)
2009-8-5 15:00
12、然后呈现如下图片,红色行家写着 ecx+000001e0,这里ecx 代表二级基址内放的数值,1e0 代表偏移量2。方框内是CE帮我们计算好的二级基址内的数值,我们就是需要他。把这个数字记下啦。通过它寻 找二级基址的位置
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/090805151315513dbd3886727c.jpg[/img] 下载 (63.25 KB)
2009-8-5 15:13
13、点新的搜索,然后输入刚刚找到的二级基址内的数值,并且勾上前面的16进制(因为这个数据是16 进制),再点击首次搜索(找找看哪个地址内的数值,满意上面这个数字),得到,如下两个结果,然后双击这两 个结果,把他们加入下面的方框内。并且增加解释第A次进游戏得到的可能二级基址。
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051521d2ece13b6f142b92.jpg[/img] 下载 (79.22 KB)
2009-8-5 15:21
14、二级基址只有一个,所以这两个结果只有一个是真的,(个别来说第一个是真的地址,但也不是相对的 。碰RP的话,你也可以直接用第一)所以接下来要断定哪个才是真的二级基址。刚说过,退到游戏取舍人物画面 再进游戏,一级基址不变,二级基址不变,然而二级基址内放的数字变了,这导致这个时候血的内存地址也变了。 所以下面要做的就是退到人物挑选画面,再进入游戏,通过刚刚办法(1---13步骤),再找次二级基址,他应该和前一回找到的二级基址一样。
下面图中我描写为(B可能的二级基址)的东东,是我第二次搜索得到的可能二级基址
。比拟下两次进游戏得到的二级基址,只有红色的地址是没变的,阐明他就是二级基址。
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/09080515413e40e370d2349a6e.jpg[/img] 下载 (94.08 KB)
2009-8-5 15:41
15、找到二级基址后,通过上图的面板你们也发明
二级基址(10822D20 ) = 一级基址的数值() + 偏移1()
所以现在我们要找一级基址的数值 和 偏移1.
我们说过二级基址数值只要进入正式游戏都不不会转变了,只有进入人物选择画面的时候才变,下面我们要做 的就是跟踪这个二级基址,回到人物选择画面,看看是谁往这个基址内写入东东~
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/09080516012df53f08e080b341.jpg[/img] 下载 (73.72 KB)
2009-8-5 16:01
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/090805160137f8d0c04f38d80c.jpg[/img] 下载 (154.2 KB)
2009-8-5 16:01
16、正式进入游戏后,我们发现检测到几个结果,那到底哪个才是真的呢?
我们选择红色那个,因为他有mov
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051605be2e47126b6f8ee3.jpg[/img] 下载 (102.91 KB)
2009-8-5 16:05
17、双击这个红色,然后得到如下图。红色那行写着 eax+ecx*4,这里前面的eax 代表一级基址内放的数值,ecx*4 代表偏移量1。方框内是CE帮我们计算好的一级基址内的数值,我们就是需要他。把这个数字记下啦。通过它寻 找一级基址的位置。同时我们发现ecx代表的是4(十六进制),4(十六进制)*4=10(十六进制)。1 0就是偏移1
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051614f988fdb1112c0246.jpg[/img] 下载 (128.72 KB)
2009-8-5 16:14
18、搜索一级基址内的数值10822D10,看看哪个地址内装的是他。结果就一个
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051618b2a67248326a0e6e.jpg[/img] 下载 (59.14 KB)
2009-8-5 16:18
19、好了现在我们知道所有的东西了,红色局部是无论哪次进游戏都不变的。找到他们,现在就能进行找血 的内存地位了。
一级基址(012BAB94 )
二级基址(10822D20 ) = 一级基址的数值(10822D10) + 偏移1(10)
血内存地址(055FCE18) = 二级基址的数值(055FCC38) + 偏移2(1e0)
回复 援用 评分 讲演 使用道具 TOP
smilehack
发短新闻 加为挚友 smilehack 当前离线
UID236235 帖子47 精髓2 积分160 鲜花28 个 鸡蛋-1 个 铜币44 个 银币27 个 金币62 个 浏览权限40 在线时间25 小时 注册时间2009-3-31 最后登录2010-8-17 [img]images/newblue/userinfo.gif[/img]
初中一年级
[img]images/newblue/star_level2.gif[/img][img]images/newblue/star_level1.gif[/img]
帖子47 积分160 鲜花28 个 鸡蛋-1 个 铜币44 个 银币27 个 金币62 个 注册时间2009-3-31 最后登录2010-8-17 [img]images/magics/rtk_s.gif[/img]
板凳
[img]images/common/online_member.gif[/img] 发表于 2009-8-5 13:03 | 只看该作者
本帖最后由 smilehack 于 2009-8-5 16:50 编辑
下面我们要来测验下我们得到的是否准确,思路是:
以下红色部门代表:无论哪次进入游戏都不会变的量
基址1内放的数字=读取数据(基址1)
基址2=基址1内放的数字+偏移量1 基址2内放的数字=读取数据(基址2)
血内存地址=基址2内放的数字+偏移量2 HP值=读取数据(血内存地址)
依据以上思路,写成按键精灵的代码如下:
//下一行的目标是获取游戏窗口句柄。。因为下面要用到这个参数
Plugin jzs=Window.MousePoint()
//定义变量
VBS Dim hp base py1 py2 hpjz1 hpjz2
Rem 程序开始
//base,py1,py2 分辨表示一级基址的门牌号,偏移1,偏移2
//自己修正,下面的三个参数为你自己的,你就能直接得到你自己游戏的血量多少,请注意所有十六进制的数字前都 要加上&H,这样电脑才知道你输入的数字是十六进制的,不然像第二行的py2不加&H就变成十进制的10, 实际上十六进制的10代表的是十进制的16
base=&H012BAB94
py1=&H10
py2=&H1e0
//hpjz1代表 一级基址内放的数字,下一句话意思是从一级基址内的数据存入hpjz1中.顺带弥补句以下所有Memory .Read32Bit得到的数据都是十六进制
Plugin hpjz1=Memory.Read32Bit(jzs,base)
//hpjz2代表二级基址内放的数字,hpjz1+py1意思是把基址1内装的数字+偏移1,得到基址2的门 牌号,下一句话意思是,计算出基址2的门牌号,然后从二级基址内读入数据存入hpjz2中
Plugin hpjz2=Memory.Read32Bit(jzs,hpjz1+py1)
//hp代表。。。地球人都知道什么意思。。。hpjz2+py2意思是把基址2内装的数字+偏移2,得到HP 内存位置的门牌号,下一句话意思是,计算出HP内存位置的门牌号,就从HP内存地址中读入数据 存入hp中
Plugin hp=Memory.Read32Bit(jzs,hpjz2+py2)
//避免HP数值不是十进制表现,所以通通给我转成十进制
hp=int(hp)
//弹出HP是多少的信息框
MessageBox hp
复制代码
接着完全封闭游戏,从新登陆,运行脚本看看读取到的血量是多少:
[img]images/newblue/attachimg.gif[/img] [img]attachments/month_0908/0908051642e9f867abbd1e7f7c.jpg[/img] 下载 (131.47 KB)
2009-8-5 16:42
OK,解释我们找到的是正确的。教程(一)到此停止。额。。这个再看不懂的话。。我就米办法了饿。顺带 给多少个别人写的图文找基址的攻略。。你们也去参考下。。http://bbs.vrbrothers.com/viewthread.php?tid=93836&highlight=%D5%D2%2B%C4%DA %B4%E6
http://bbs.vrbrothers.com/viewthread.php?tid=33291&highlight=%C4%DA%B4%E6%BB %F9%D6%B7
下节课我们学习后台主动加血,加蓝