做一个微信跳一跳的外挂

淘宝上好多卖跳一跳代练的,其实做一个很简单,不需要有安卓开发知识,不需要有图像识别知识,不需要有人工智能知识!重要的事情说三遍,都不需要。


简单说一下思路:


1.用adb连手机截图,命令是:

adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png

这样,屏幕就抓到本地了


2.用adb模拟按键

adb shell input swipe 800 800 800 800 650

就是在800x800这个位置按650ms


3.通过抓到的图,计算长度,换算成按屏幕的时间,模拟发出按键就可以了


4.想自动跳,就需要找到旗子和目标的位置,我把图片缩放成im.resize((1080/3, 1920/3))


4.1找到脑袋旗子脑袋有个像素值是:RGB(77, 71,116),找到这个点,往下55个像素大约就是底座的位置

               p = im.getpixel((x, y))
            
               if abs(p[0]-77)<5 and abs(p[1]-71)<5 and abs(p[2]-116)<5:
                     x+=1
                     y+=55

4.2找目标的值,这个想找准比较难,但是大差不差没问题

           1)取到背景颜色,沿y往下搜索,发现一个不是背景的时候,应该就是目标的最上面的点

                  问题1,有可能旗子比目标还要高,于是判断这个时候的 x 是否和(4.1)判断旗子x相差正负20像素,如果和棋子x比较近,需要丢弃继续找

                  问题2,如果目标是圆形,可能造成获取定点偏左,于是需要往后找,找到园顶中心那个点

            2)确定了定点,往下寻找中心点

                 如果是纯色,找到第一个不是该颜色的点即可,这个两点长度的一半就是中心,但是中间有可能是白点,需要忽略白点的 RGB(245,245,245)

                如果是杂色 ,则搜索的长度比较小,这时固定往下移动10像素当中心点就好了,跳不准但不会跳出


4.3找到起始点,和终点,计算一下距离,就可以开始跳了。

代码不贴了,很简单的。

            

最后,无图无真相



跳了两小时,1w分以上没啥意思了,也没什么变化了,可以跳到手机没电。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
本文根据时下最火小游戏微信跳一跳,编写的物理外挂,实现简单,具有DIY精神的都能迅速上手。废话不多说,先来点视频开开胃。 哈哈哈,是不是很爽很刺激,好了,不吊胃口了,还是整点干货吧。 准备1:手机一部,电脑端下载好投屏软件,苹果的airplay,安卓的忘了,自己找下,嘻嘻嘻。。。。 准备2:搞电子的才有,继电模块一个,随便什么开发版一块,有串口就行,usb转串口模块一个。 准备3:电脑上装上我提供的“跳一跳物理外挂.exe",这个才是核心,后面我会贴源码,low不low不要紧,关键好用,我花了一天时间学的,代码拙劣,慎看,/呲牙。 准备工作完了,现在开始动工,先物理部分。 首先拿出你的继电模块,然后把继电给削了(捂嘴笑)哈哈,我也不知道怎么告诉你怎么削,还是给个图吧。 哎吆我去,这图这么大的咧,将就看看。反正就是把继电的壳子给拿掉。温馨提醒:用刀的时候注意点,手弄破没事,别把继电线圈削了(幸灾乐祸的笑呵呵) 然后呢,找个导电的,有电容的,弹簧呀,电容笔呀,或者湿海绵呀。。。一切可以让手机触摸屏反应的材料都行,就是要小一点。 反正我是找了个弹簧,还把它焊在了继电的活动片上。不会的,看图,下面没图,还是上面那张。 硬件部分还差个单片机,这个你们都会的,专业的嘛,随便整个单片机最下系统就行,带个串口,协议我告诉你简单。 帧头32位的最高8位后8位后8位后8位 ‘A’00000000 看到没,接收到串口数据后,把除了'A' 之外的四个8位的数据合并成一个32位的数据,这个合并后的数据,就是ms,是多少就是多少ms。 简单吧,单片机只要接收到这组串口数据,就可以进行操作了,(忘了说了波特率115200 ,8,0,1,我想大家都看得懂,不解释了。) 主程序代码如下: if(收到串口发来的数据) { 将4个字节接收到的数据转化为32位的数据; 继电置1或者置0(看你电路了,让它按下去就行,模拟按下动作); 延时(xx ms);(这就是那个32的数据) 继电置1或者置0(看你电路了,让它抬起来就行,模拟抬起动作); } 实在不会的,也没事,我不是还有程序源码的嘛; 好了好了,硬件就到这了,整点软件的。软件c#写的,高手的话,简单,随便你们喷,反正我也不熟,就学了一天,整成这样,自认为还行。 源码,我会贴上去,别急。 操作部分。我是鼠标左键点击确定起点位置,鼠标右键点击确定终点位置。也就是说,你想跳,那就鼠标左键点起点,鼠标右键点终点。根据距离计算时间。软件上,有个系数,用来确定不同电脑,不同分辨率的,自己调试下, 一致就行。截图截图,看图看图。 先打开这个软件,苹果的airplay,然后打开手机,选择airplay镜像。然后将软件全屏。 打开我的那个"跳一跳物理外挂.exe", 选择串口后,就点连接,没啥问题是不会有任何提示的。有问题就报错了。(哈哈哈,仰天长啸中) 下面这个框 3.5,这个就是系数了,要将我的这个软件和投上去的界面重合,这样才行。然后你试试鼠标左键,鼠标右键,看看你的继电会不会动。(不会动就是你程序有问题,硬件有问题,电脑有问题,反正我的是好的,我不管,自己检查) 还有就是,这个软件是由两个窗体组成的,一个透明的,一个透明有边框的,别问我为什么,因为我不知道如何设置透明鼠标不穿透,你也不知道呀,哈哈哈(鬼畜中),会的私信我,我学一下。所以,如果点击的时候会触发这个软件后面的东西,那么请点击任务栏中,将窗体设置到最前,其实就是获取热点了,其实就是激活窗口啦,笨呢,点不到说明窗口不在激活状态嘛。 好了,不说了, 下面都是图了,你们自己玩吧。 啰嗦一句,把框框对齐哟,不然跳不准呢。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值