最近微信出了一个"跳一跳"的小游戏,这个游戏其实在之前有手机端版本,无奈微信借助强大的用户把这游戏又拿起来弄火了,而且通过最新版的微信可以看出,微信已经开始重视小程序的入口释放了,同时本人在最近的使用过程中也发现小程序真的很方面,未来的形式谁都说准呀!不多说废话了,直接看本文的重点,这个游戏的玩法很简单,只要长按圆柱体根据距离决定长按时间:
游戏出来之后,就有很多人开始研究刷榜工具原理了,网上有很多版本Python,Kotlin等语言写的工具,这里我就用Java来写一个,不过本文更重要的是介绍原理,以及其他的实现思路介绍。工具的核心原理就是借助了两个重要的adb命令:
第一、截图命令:adb shell screencap -p [图片路径]
截取手机屏幕保存到设备目录下,一般都是SD卡,然后在借助adb pull命令弄到本地。
第二、模拟滑动事件:adb shell input touchscreen swipe x1 y1 x2 y2 time
滑动参数可以看到,从[x1,y1]点滑动到[x2,y2]点,然后是滑动的时间。
无独有偶,这两个命令既然都是我写的Android应用安全防护和逆向分析书中的第三章的包含命令:
所以对于书中的第三章里面有很多常用的命令,大家在看的时候一定要实际操作和延伸,对于开发有很多帮助的,对这本书感兴趣的同学可以点击"阅读原文"购买!
上面介绍完了核心原理之后,接下来就来看看原理吧:
这个工具原理是基于adb命令的,所以操作之前必须配置好adb工具环境,具体方法可搜索!PC端写的工具可以有很多语言实现,这里用我会的Java语言,其实就是JavaSE开发,借助JFrame来实现写一个Java应用。内部使用工具类Runtime来执行adb截图命令,然后把图片渲染到JPanel面板上:
最后给面板加上鼠标点击事件即可:
这里需要注意两点:
第一、需要一个变量来记录跳跃的起始点,因为我们在操作之前必须先点击面板图片上的物体中心点作为圆柱跳跃的起始点,然后在点击一次下一个物体的中心点作为圆柱跳跃的着陆点!
第二、计算路径问题,这里利用鼠标点击位置的x和y值,利用勾股定理计算即可!
然后就是计算滑动的时间,也就是距离除以圆柱跳跃的速度,这个速度测试发现介于0.3~0.5左右,可以自己调节!有了时间之后就可以直接发送adb命令进行模拟滑动了,因为我们只想圆柱体原地滑动一定时间,所以命令为:adb shell input touchscreen swipe 170 187 170 187 time;滑动的起始点和终点都是在自己圆柱体的范围,只是让圆柱体滑动停留的时间到位即可。
好了上面大致介绍了这个原理,下面来具体看看操作效果吧:
这里看到只有在PC端的Java程序中,点击起跳点物体的中心点和着落点物体的中心点即可,几乎是不可能死亡的,只有你有足够耐心,磕着瓜子,刷个一万分是没任何问题的。然后你就成了朋友圈的榜首,可以把自己的微信头像和微信名改成想要打广告的内容:比如头像设置成logo:360卫士,微信昵称是:免费杀毒就用360安全卫士!免费的广告位和宣传!
代码下载地址:
https://github.com/fourbrother/WXJumpGameUtils
延伸
到这里还没算结束呢?有的同学会认为这个操作太麻烦了,而且对于小白用户以及没电脑的同学怎么办?那么这个可以在手机端直接操作吗?理论上也是可以的,我们需要编写一个辅助的Android程序,利用WindowManager在微信小程序的界面上盖住他,然后手动点击物体的中心点,通过WindowManager的View来捕获点击事件,然后在程序内部执行模拟滑动即可,这里相当于省去了截屏工作!每次操作完成之后要记得把自己的WindowManager先退出,不然模拟滑动没效果的!不过这个也有局限性就是模拟滑动的那个命令是shell用户权限,第三方应用没这个权限,所以设备得root了,程序获取root之后执行命令:input touchscreen swipe 170 170 170 170 time;可想而知如果这个命令没有权限限制,那么第三方应用可以在夜间你手机充电的时候,偷偷地在后台模拟各种操作,比如点击主页面打开支付app,然后依次走下去就呵呵了!关于系统的root,system,shell,app等权限说明可以查看Android应用安全防护和逆向分析一书中的第10章第五节内容,还没有购买的同学可以点击"阅读原文"购买,有的同学也说了也可以利用辅助功能不需要root进行操作也是可以的,也有的同学利用Xposed来hook WX,拦截滑动事件,不过这都到年底了,按照WX以往的风格都会有些动作,所以为了能让自己回家过年,就收敛点吧!
本文转自微信公众号:jiangwei0910410003