相信微信跳一跳这个游戏大家应该都或多或少听过或者玩过,想必好多朋友看到自己好友们得高分自己却分数老是玩不高!
之前在这个游戏刚出来时候有人用Python写出了一个小外挂,随后网上各种各样的外挂包括物理外挂层出不穷,今天就给大家分享一下如何自己用C语言写一个小的跳一跳游戏辅助外挂(因能力有限,这个小外挂只针对安卓系统)。
首先我们需要准备一个工具ADB(Android Debug Bridge(安卓调试桥) )用来将我们的电脑与我们的手机建立起联系
ADB工具下载:adb下载
接下来我们给电脑配置环境变量,为接下来我们的步骤做准备
首先右键我的电脑属性,找到高级系统设置打开,然后就可以看到环境变量的选项
单击打开,在系统变量中找到Path
然后双击进行编辑,接下来打开我们刚才下载好的ADB工具的文件夹,拿到它的储存路径
然后将路径复制,粘贴到我们刚才的path变量内
win10系统的界面如上图所示,老版本的Windows,环境变量用分号;隔开然后粘贴就行
接下来我们在手机上打开USB调试,连接手机(部分手机需要处于开发者模式才能进行USB调试,在系统设置—关于手机—多次点击版本号即可进入开发者模式),然后在计算机上运行cmd来看我们环境变量是否已经添加好了
在cmd中输入 adb devices,如上图所示出现一串字符后面有 device就说明我们手机已经通过adb工具与我们电脑连接起来了
接下来我们进行我们的代码编辑打开我们的vs或者vc
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<Windows.h> int main() { int d; int time; char str[100]; while (1) { printf("请输入距离:"); scanf("%d",&d); time = d *2.3; sprintf(str, "adb shell input swipe 200 500 200 500 %d", time); system(str); } return 0; }
玩过得朋友都知道,跳一跳游戏中跳的距离跟按压屏幕的时间成正比;所以我们定义一个d变量表示我们要跳的距离(我们可以用尺子进行量取),time表示按压的时间,我们可以找到这个时间与距离的关系,本人手机屏幕1080*1920分辨率,以0.01cm为一个单位,得到的距离公式是
time = d *2.3;不同屏幕大小手机直接有或多或少误差,大家可以根据自己手机对这个d与time关系进行修改
不难看出整个代码的核心部分就是
sprintf(str, "adb shell input swipe 200 500 200 500 %d", time);
system(str);
这两行代码到底是什么意思呢?
在这里我们拿system("adb shell input swipe 200 500 200 500 1000")来举例,这句代码的意思就是使用adb命令 shell input swipe给我们手机发送一个触摸屏幕的指令,前两个参数200 500代表按压屏幕时按下去的位置坐标,接下来两个参数200 500代表按压结束时离开屏幕的位置坐标;最后的1000代表按压的时间1000毫秒;而sprintf函数是字串格式化命令,其功能是把格式化的数据写入某个字符串中,
因为每次我们跳跃的距离都是不同的所以我们才采用sprintf函数进行格式化的写入
但是本局游戏的成绩差不多一千多分但是没有计入到排行榜中,可能因为得分太高了,因为游戏可能认为我是在刷分,
所以我们分析一下ta检测外挂无非这几种可能
1.是否反复截屏(因为好多更高级跳一跳的外挂都是通过截屏然后获取距离)
2.是否你触屏的一直是在接触一个点,我上面代码中一直触屏的位置是200 500,我们通过常识就可以知道如果你是正常玩的你不可能每次都触摸一个点,所以针对上面代码我们可以将触屏的位置利用rand设置成在一个在一定范围内的随机值
3.就是你的得分情况,如果你每次都跳到最*你的得分会是1 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 32 32 .......
所以如果你给次都跳到最中心他也可能会认为你是在使用外挂,所以你可以用外挂跳几下再自己跳几下,这样就不容易被游戏认为是外挂了
以上就是给大家分享的一个不到二十行C语言代码写的 微信跳一跳游戏辅助外挂 ,这个是最简单的一种通过尺子量距离来得高分,以后有机会再给大家分享更高级的版本,通过截屏,然后鼠标点击图片中人的位置和终点位置自动计算距离进行跳跃的方法!
如果说大家有什么好的建议或意见欢迎反馈!