吵吵   2018-01-07  阅读:3,071

上个月微信更新的时候,引入了一个跳一跳的H5小游戏,一时风靡朋友圈。

这么简单的游戏,用手来玩显的很弱智,于是乎我用c#做了一个外挂来玩。


一、控制手机的问题。

android开发套件里面有个ADB的辅助工具,在电脑上使用adb.exe可以方便的截屏手机,模拟按键。

截屏:adb shell screencap -p /sdcard/screenshot.png

把图片从手机拷贝到电脑上来 :adb pull /sdcard/screenshot.png d:\\

模拟按压:adb shell input swipe x1 y1 x2 y2 time

二、图片识别的问题

找到小人的位置,这个很好解决,从下至上的扫描像素点,紫色小人的RGB(54, 60, 102),找到了基本就找到了小人的位置

private Point GetJumperLocation(Bitmap bmp)
{
Point pt=new Point(0,0);
Color cJumper = Color.FromArgb(54, 60, 102);
for (int i = Convert.ToInt32(bmp.Height * 0.75); i > Convert.ToInt32(bmp.Height * 0.25); i–)
{
for (int j = 1; j < bmp.Width; j++) { Color color = bmp.GetPixel(j, i); if(IsColorSame(color,cJumper,10)) { pt.X = j+10; pt.Y = i-10; return pt; } } } return pt; }

其次是如何找到方块的问题,这个比较麻烦,但是我们可以观察。

首先取到背景色,然后从上至下去扫描像素点,当和背景值差值比较大的时候,就找到了物体的边缘了。

这里需要优化一下的是,如果小人处于左半屏幕,我们直接从右到左扫描像素点,以防止小人的干扰,反之亦然。

找到物体开始点和边缘不在增加的转折点,算出物体中心的位置。

三、按压时间。

我们把小人和方块中心点连一条直线,如上图所示,计算出这两个点之间的距离,再乘以一个系数,得到按压时间。

像我的手机是1080*1920像素的,基本上像素距离乘以1.351的样子,得到按压时间,单位毫秒。

再用adb shell去执行按压。

为了避免被打击,按压坐标再加上点随机数来解决。

四、干不过微信。

搬条凳子看着小人自己在跳,慢慢分数越来越高,到2100了,觉得挺无聊了,就退出了。

过了一会回去看2100的记录被微信干掉了!

又刷了两次1200左右的,照样被干掉了,现在只有654的记录没有被干掉!

哎!

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

4条回应:“用c#做了一个微信跳一跳游戏的外挂”

  1. 质量检测说道:

    这个不是纯属娱乐的嘛,做外挂就没意思了

  2. 智能手机说道:

    文章不错非常喜欢

  3. 好特易购说道:

    用胶水就用乐泰胶水和可赛新胶水这才是正确的选择 https://www.hyhaote.com

发表评论

电子邮件地址不会被公开。 必填项已用*标注