游戏辅助外gua篇:如何Dump内存获得游戏的辅助
转载请标明出处:
https://dujinyang.blog.csdn.net/article/category/9267855
本文出自:【奥特曼超人的博客】
本篇邀请了 “阿七” 做个 外挂辅助入门篇 分享,之前公众号也分享过了。
最近女朋友都在玩游戏,晚上还不理人,刚好近期对游戏辅助制作很感兴趣,打算搞个辅助让她失去玩游戏的信心,所以在接下来的几天里逛了一些论坛、教程 ( 在此膜拜下辅助大神 )。 大致了解到辅助的种类,作为入门新兵,先从动作式 ( 所谓动作式,就是指用API发命令给窗口或API控制鼠标、键盘等 ) 辅助学起吧,那么就需要找一款合适的简单网络小游戏 ( 很多网络游戏有各种保护什么的 ) 作为入门学习了。
先来看下最终的效果图:

有人可能会说入门为什么不撸单机的?

呃... 单机的撸出来怎么在玩家面前装X !!! 用辅助不就是为了在对局中轻松获胜的那种舒爽嘛!!! 不就是为了 “你确实很厉害,但我永远不会输” 的畅快嘛!!! (灵魂三连)
好吧,其实只是我女朋友不玩单机游戏……

都说辅助毁游戏,那么目标 :女友的Xx连连看
Let’s Go!!!
前期准备:
游戏:xx连连看
工具:VS2019,CE,spy++
环境:win10
本文只是把xx连连看拿来练手学习下如何从内存中dump些东西, 所以我们要明白步骤是怎么玩的,下面我们就来拆解下:
玩法机制,只要将相同的两张牌用三根以内的直线连在一起消除即可。
游戏可能是一个11*19的二维字节数组。
每个数组下标对应一个值,值相同,那么牌型就相同。
空着的位置值可能是0。
每个棋子的宽高一致 ,如果能确定A,B下标可消除,那么鼠标怎么定位到A,B下标的位置,然后点击呢?
有人很好奇,为什么是1119的二维字节数组,因为只是猜想,你也可以2020,只是要明白是个二维字节数组就好。
其它的一顿想当然的脑补... (还好已经验证,不然绝对翻车..)
那么核心就是能找到第一个下标的内存基址,推出整个棋盘的数据,然后通过算法找到相同的数据,模拟点击消除即可。
首先,创建房间进入练习模式,前期可能会翻车,大家先打开CE工具,附加到游戏进程,这一步慢慢来,通过不停的搜变化的值、为0的值、大于0的值 (CE搜索教程请自行百度,这里就不叙述了),最终找到第一个下标的内存地址。
怎么查看内存区域呢,大家看下面的图:

Push、Mov、sub这些不懂的下一篇会出个简单的知识图谱。
可以看出,前面的分析是正确的,相同的牌型,对应的值是一样的,空着的地方对应的值为0。棋牌确实是11*19的字节数组。
内存地址找到了,那么开始编写辅助,代码方面就不详细贴了,毕竟写的也不好。
首先我们需要一个11*19二维数组棋盘,还有每个棋子的属性,那么,我们就需要定义一个棋子类,棋子类属性包含 x坐标,y坐标,指针,行,列。
通过spy++定位出第一个下标的x值, y值, 和之前已经拿到第一个棋子的内存地址去比较,棋子大小不变,是固定的,那么我们通过第一个棋子的数据,可以推断出整个二维数组棋盘数据,当然前提是得匹配得上啦。
话不多说,看代码:

通过遍历整个棋盘,找到相同的两个值,通过寻路算法查看是否可以消除,如果可以消除

模拟点击两个棋子的x,y坐标,实现消除

这里的鼠标点击是模拟发送,其实和辅助性能类的差不多,大致做了个界面出来,效果图如下:

Tips: 这几个小按钮,都是控制的消除速度index,这里我们需要用Sleep(index) 函数去控速,不然会有点危险,如果是0的话大概就能秒消了。
小插曲: 本着不想太奔放的缘故,之前默认是一秒消除一对,测试一段时间后发现,大概率拿不到第一,连连看大神们是能干过每秒消除一对的辅助的 (大神的手眼速度让萌新瑟瑟发抖~~), 这样就造成刷分的缓慢,最后只能修改成只要对手中有人剩余棋子数小于10,那么这边index设置0,实现秒消,拿第一。
当然,这里不是为了刷分啊,我们只是为了学习如何dump内存而已…

自动测试挂了几天后,胜率从25%刷到了81%,积分从几千到几十万,默默的卸载了此游戏,基本稳定,自此连连看辅助就告一段落了。
值得一提的是, 后来女友再也没玩过这个游戏了(呵呵哒)。
然鹅...也再也没有理我了 …

本文申明:本文仅供学习与参考之用,请勿用作商业用途,转载请联系作者。

作者:奥特曼超人Dujinyang
来源:CSDN
原文:dujinyang.blog.csdn.net/
版权声明:本文为博主杜锦阳原创文章,转载请附上博文链接!
游戏辅助外gua篇:如何Dump内存获得游戏的辅助的更多相关文章
- 番外特别篇之 为什么我不建议你直接使用UIImage传值?--从一个诡异的相册九图连读崩溃bug谈起
关于"番外特别篇" 所谓"番外特别篇",就是系列文章更新期间内,随机插入的一篇文章.目前我正在更新的系列文章是 实现iOS图片等资源文件的热更新化.但是,这两天 ...
- IDA动态调试技术及Dump内存
IDA动态调试技术及Dump内存 来源 https://blog.csdn.net/u010019468/article/details/78491815 最近研究SO文件调试和dump内存时,为了完 ...
- 闲扯游戏编程之html5篇--山寨版《flappy bird》源码
新年新气象,最近事情不多,继续闲暇学习记点随笔,欢迎拍砖.之前的〈简单游戏学编程语言python篇〉写的比较幼稚和粗糙,且告一段落.开启新的一篇关于javascript+html5的从零开始的学习.仍 ...
- 在JVM发生FGC前后dump内存
原文 http://itindex.net/detail/46666-jvm-fgc-dump 一.需求 有时候web应用经常会发生FGC,我们想知道FGC把那些对象给回收了,思路很简单就是看看FG ...
- 如何制作一款HTML5 RPG游戏引擎——第五篇,人物&人物特效
上一次,我们实现了对话类,今天就来做一个游戏中必不可少的——人物类. 当然,你完全是可以自己写一个人物类,但是为了方便起见,还是决定把人物类封装到这个引擎里. 为了使这个类更有意义,我还给人物类加了几 ...
- 如何制作一款HTML5 RPG游戏引擎——第四篇,情景对话
今天我们来实现情景对话.这是一个重要的功能,没有它,游戏将变得索然无味.所以我们不得不来完成它. 但是要知道,使用对话可不是一件简单的事,因为它内部的东西很多,比如说人物头像,人物名称,对话内容... ...
- [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新全然解读
---------------------------------------------------------------------------------------------------- ...
- Linux中使用gdb dump内存
在应急响应中,我们往往会有dump出某一块内存下来进行分析的必要.今天要讲的是利用gdb命令dump出sshd进程的内存. 按照 Linux 系统的设计哲学,内核只提供dump内存的机制,用户想要du ...
- Python 项目实践一(外星人入侵小游戏)第五篇
接着上节的继续学习,在本章中,我们将结束游戏<外星人入侵>的开发.我们将添加一个Play按钮,用于根据需要启动游戏以及在游戏结束后重启游戏.我们还将修改这个游戏,使其在玩家的等级提高时加快 ...
随机推荐
- 两台CentOS6.5 在不同机器上互联
准备工作 1.安装vmware及虚拟机centos6.5: 2.将安装好的centos6.5复制一份,在另一台机器上拷贝. 要进行不同机器上虚拟机的互相通信,需要用桥接模式进行互联.如下图,对vmwa ...
- tomcat容器是如何创建servlet类实例
当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息. 然后,将每个应用中注册的servlet类都进行加载,并通过反 ...
- JNI静态注册与动态注册详解
JNI注册,是指将java层方法(native关键字修饰的)和C层方法对应起来,以实现java层代码调用c层代码的目的.JNI注册分为静态注册和动态注册两种,静态注册是通过固定格式方法名进行关联,动态 ...
- Oracle VM VirtualBOX桥接网卡
1.在VirtualBOX设置中的网络菜单,连接方式选择桥接网卡 2.启动系统,设置静态IP sudo vim /etc/network/interfaces auto enp0s3 ...
- 第六版PMBOK中工具与技术的介绍:数据收集数据分析数据表现
数据收集技术: 1.头脑风暴:收集关于项目方法的创意和解决方案.2.焦点小组:召集预定的相关方和主题专家,了解他们对所讨论的产品服务或成果的期望和态度.主持人引导大家互动式讨论.3.访谈:通过与相关方 ...
- 【css】CSS设置文字不能被选中
CSS设置文字不能被选中 /*设置文字不能被选中 以下为css样式*/ -webkit-user-select:none; -moz-user-select:none; -ms-user-select ...
- 分布式FastDFS集群部署
FastDFS FastDFS的作者余庆在其 GitHub 上是这样描述的:"FastDFS is an open source high performance distributed f ...
- go-数组-切片-字典
声明一个数组变量的同时为该变量赋值. ], , } 另一种便捷方法, 类型字面量中省略代表其长度的数字 , , } 对于数组来说,索引值既不能小于0也不能大于或等于数组值的长度. 索引值的最小有效值从 ...
- VSCode 安装 code 命令
VSCode 提供 code 命令直接从命令行中打开文件目录,此时需要先安装 code 命令. 1.首先打开 VSCode 2.使用 command + shift + p (注意window 下使用 ...
- postman-windows下newman的使用
一.newman的安装 1.安装node.js下载https://nodejs.org/en/ C:\Users\iphauser>node -vv10.16.1C:\Users\iphause ...