这段时间很流行开挂啊,玩吃鸡有各种挂,透射挂、路飞挂层出不穷!电脑病毒也各种开挂,现在的病毒都不流行偷拍、删文件了,人家直接在你电脑上放个挖矿软件,比特比、以太坊、EOS纷至沓来!
而前不久微信官方前脚刚发布了跳一跳小游戏,萌萌哒码农们就发布了各种各样的挂,有基于Python的,有基于NodeJS的,还有基于Java、Golang的。。。。。真是各路程序员,各显神通啊!而其中Python挂一挂最引人注目,这还要得利于它强大的第三方库啊!今天我们就来捋一捋,看看这些挂到底是什么样的原理。
点进去看一下README文档,可以看到这个工具是基于ADB的,这个ADB常常用于案桌开发,当你的手机开启了USB调试功能,并连到电脑上时,就可以通过ADB软件来控制手机了!如果要在Python程序中调用shell命令,直接用os.system或os.exec就好了。
然后打开github repo上的commons文件夹,看里面的文件名大概可以猜到这里的程序是用来给手机截屏用的,看一下内容,果不其然。而resources/images文件夹里的内容大概就是截图的集合了,之前作者在这里保存了很多张jpg图片,现在做成了一个gif文件,看起来也清爽多了!
返回上一级后点开wechat_jump_auto.py 文件,发现作者现在都把思路写出来了,那我就不废口舌,直接贴出来好了!
=== 思路 ===
核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,
根据两个点的距离乘以一个时间系数获得长按的时间
识别棋子:靠棋子的颜色来识别位置,通过截图发现最下面一行大概是一条
直线,就从上往下一行一行遍历,比较颜色(颜色用了一个区间来比较)
找到最下面的那一行的所有点,然后求个中点,求好之后再让 Y 轴坐标
减小棋子底盘的一半高度从而得到中心点的坐标
识别棋盘:靠底色和方块的色差来做,从分数之下的位置开始,一行一行扫描,
由于圆形的块最顶上是一条线,方形的上面大概是一个点,所以就
用类似识别棋子的做法多识别了几个点求中点,这时候得到了块中点的 X
轴坐标,这时候假设现在棋子在当前块的中心,根据一个通过截图获取的
固定的角度来推出中点的 Y 坐标
最后:根据两点的坐标算距离乘以系数来获取长按时间(似乎可以直接用 X 轴距离)
读者朋友们可以根据这一段描述,仔细看看人家是怎样是怎么用代码实现的,说不定下一个爆款手游开挂程序就是你做出来的!
(说句题外话,之前我还以为是用深度学习做出来的)
领取专属 10元无门槛券
私享最新 技术干货