「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

简介

这个外挂原理比较简单,通过adb驱动链接到手机,通过图片识别实现模拟用户操作,通过计算方块像素实现得到下一个方块的坐标,跳到下一个点的位置设一个随机数.**

环境配置

首先我们先把adb驱动给配置好

右键单击此电脑

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

高级系统设置

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

双击Path

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

点击浏览把adb文件夹包含进来,也可以复制adb路径粘贴进来

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

meta+r输入cmd打开终端输入adb如果有以下输出,那么环境就配置好了

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

接下来我们要连接到手机

我们要在手机中打开开发者选项中的USB调试,我的手机是redmi k20 pro MIUI12的安卓系统所以其他机型可能稍有不同,如果不会操作的话可以百度一下

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

首先打开设置中的手机参数其他系统有的叫关于手机,连续点击下方的MIUI版本直到出现已打开开发者选项

*打开后进入到开发者选项中

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

勾选USB调试

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

终端输入adb devices

显示一下信息证明链接成功

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

在手机的根目录下创建一个自己的文件夹

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

在文件夹下面放一张跳一跳的截图

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

 

之后让我们的程序跑起来,我们就可以去吃饭喝咖啡了,让计算机帮我们玩

#include <stdio.h>
#include <windows.h>
#include <graphics.h>
#include "atlimage.h"
#include <time.h>
#define WIDTH   1080         
#define HEIGHT  2340
IMAGE image, img; // 截图图像
int coor[2340][1080]; // 保存截图(处理后)中所有的像素点
int blockX, blockY; // 目标方块顶部坐标
int peopleX, peopleY; // 角色的坐标
int touchX, touchY; // 模拟按下的坐标
int x, y;
char str[100];
BOOL isNewBlock(int color);
BOOL colorFun(COLORREF color1, COLORREF color2, int diff);
int main()
{
	srand((unsigned int)time(NULL));
	while (1)
	{
		// 截图并保存
		printf("capturing data and screen:");
		system("adb shell screencap -p /storage/emulated/0/canxin/screen.jpg");
		system("adb pull /storage/emulated/0/canxin/screen.jpg"); //不可缺少 
		// 截图格式转换 png -> jpg                                     
		CImage cimage;
		//cimage.Load("screen.png");    //
		cimage.Save("screen.jpg");
		loadimage(&image, "screen.jpg"); // 把截图保存到image
		// 切割图片,取到游戏区,舍弃非游戏区域,提高判断效率
		SetWorkingImage(&image);
		//从坐标(100,600)位置开始截取,2340*1080,即截取图片的左上角坐标是(100,600)
		getimage(&img, 131, 1083, HEIGHT, WIDTH);
		SetWorkingImage(&img);
		printf("getting the role and block location...\n");
		// 扫描角色坐标,从下往上(从上往下扫描到头部会停止)
		for (y = WIDTH - 1; y >= 0; y--)  //逐行扫描, 1080行,每行2340列
		{
			for (x = 0; x < HEIGHT; x++)
			{
				coor[x][y] = getpixel(x, y);// 保存像素点
				if (colorFun(coor[x][y], RGB(55, 60, 100), 10))
				{
					peopleX = x;
					peopleY = y;
					goto getRole;
				}
			}
		}
	getRole:
		//  判断角色在左边还是右边,加快图形判断效率,处理极小形方块的bug
		for (y = 0; y < WIDTH; y++)
		{
			/*  //右边
			 x = 0;
			 for (; x < peopleX - 60; x++)  {
			 }
			*/
			/*  //左边
			 x = peopleX + 60;
			 for (; x < 800; x++) {
			 }
			*/
			x = ((peopleX < 400) ? peopleX + 60 : 0);
			for (; x < ((peopleX < 400) ? 800 : peopleX - 60); x++)
			{
				coor[x][y] = getpixel(x, y); // 获取像素点
				if (isNewBlock(coor[x][y])) // 判断是否是新的盒子
				{
					blockX = x;
					blockY = y;
					goto getBlock;
				}
			}
		}
	getBlock:
		printf("calculate jump and touch coordinates...\n");
		// 计算落点
		// 故意计算的不是很准确
		// 准确的落点是目标方块定点和底点之间的中点
		int targetX = blockX + 10;  //10和95可以进一步用随机值代替,加强防外挂监测能力
		int targetY = blockY + 95;
		// 根据随机数种子模拟手指按下坐标,防外挂检测
		touchX = rand() % 80 + 200; // 200-279
		touchY = rand() % 85 + 300; // 300-384
		int distance = sqrt(double((targetY - peopleY) * (targetY - peopleY) + (targetX - peopleX) * (targetX - peopleX)));
		int time = 1.35 * distance;
		//少许偏移的滑动,来模拟人的“长按”操作
		//每次都是准确位置的“长按”,可能被检测为“外挂”
		sprintf_s(str, sizeof(str), "adb shell input swipe %d %d %d %d %d", touchX, touchY, touchX + 1, touchY + 1, time);
		printf("executing:(%d,%d)->(%d,%d) touching (%d,%d) for %dms\n", peopleX, peopleY, targetX, targetY, touchX, touchY, time);
		system(str);
		//Sleep(1500);
		int waitTime = rand() % 1000 + 1000;
		Sleep(waitTime);
	}
	return 0;
}
// 判断颜色是否相似,diff 越小越相似
BOOL colorFun(COLORREF color1, COLORREF color2, int diff)
{
	// 两个像素点,在RGB三种颜色分量上的差方和(差的平方之和),再开根号
	return sqrt(double((GetRValue(color2) - GetRValue(color1)) * (GetRValue(color2) - GetRValue(color1)) + (GetGValue(color2) - GetGValue(color1)) * (GetGValue(color2) - GetGValue(color1)) + (GetBValue(color2) - GetBValue(color1)) * (GetBValue(color2) - GetBValue(color1)))) < diff;
}
// 判断是否是新的盒子
BOOL isNewBlock(int color)
{
	int r = GetRValue(color);
	int g = GetGValue(color);
	int b = GetBValue(color);
	if (colorFun(color, RGB(246, 246, 246), 10))//浅白色
		return TRUE;
	else if (colorFun(color, RGB(250, 250, 250), 10))
		return TRUE;
	else if (colorFun(color, RGB(255, 255, 255), 0))//纯白色
		return TRUE;
	else if (colorFun(color, RGB(100, 148, 106), 20))//墨绿色
		return TRUE;
	else if (colorFun(color, RGB(113, 113, 113), 10))//深灰色 
		return TRUE;
	else if (colorFun(color, RGB(245, 128, 58), 10))//橙色
		return TRUE;
	else if (colorFun(color, RGB(186, 239, 69), 10))//浅绿色
		return TRUE;
	else if (colorFun(color, RGB(234, 203, 174), 10))//木质桌子
		return TRUE;
	else if (colorFun(color, RGB(254, 240, 89), 10))//黄色
		return TRUE;
	else if (r > 124 && r < 134 && g>111 && g < 121 && b > 219 && b < 229)//紫色相间
		return TRUE;
	else if (r > 75 && r < 85 && g>158 && g < 165 && b > 85 && b < 95)//大圆绿柱子
		return TRUE;
	else if (colorFun(color, RGB(254, 74, 83), 10))//红色
		return TRUE;
	else if (colorFun(color, RGB(152, 114, 111), 10))//华岩石
		return TRUE;
	else if (colorFun(color, RGB(117, 117, 117), 10))//马桶
		return TRUE;
	else if (colorFun(color, RGB(225, 199, 142), 10))
		return TRUE;
	else if (colorFun(color, RGB(241, 241, 241), 10))//书本
		return TRUE;
	else if (colorFun(color, RGB(255, 172, 178), 10))//粉色盒子
		return TRUE;
	else if (colorFun(color, RGB(73, 73, 73), 3))//奶茶杯子
		return TRUE;
	else if (colorFun(color, RGB(147, 147, 147), 10))//类似唱片机
		return TRUE;
	return FALSE;
}

点击链接观看详细视频教程

「干货教程」朋友圈装X神器!超级辅助-微信跳一跳

热门文章

暂无图片
编程学习 ·

【整理】信息安全系统与技术课程复习整理

难得自己整理……信息系统安全与技术选择 15 填空 15 名词解释 4*6 简答 6*6 方案设计 10根据信息流动过程划分的安全威胁:中断威胁、截获威胁、篡改威胁、伪造威胁。 CIA安全需求模型:保密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。 信息保障体…
暂无图片
编程学习 ·

vue项目实现路由按需加载(路由懒加载)的3种方式

vue异步组件es提案的import()webpack的require,ensure()vue异步组件技术 ==== 异步加载 vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 . 但是,这种情况下一个组件生成一个js文件/* vue异步组件技术 */ {path: /home,name: home,component: resolve => re…
暂无图片
编程学习 ·

c#UDP协议通讯

在写具体的用c#实现UDP通讯的方式之前,我们要先搞清楚相关的概念,那就是什么是UDP协议。UDP和TCP一样,是同属于TCP/IP协议簇的传输层协议:这里一定要注意TCP/IP是指一堆协议的集合,而这些集合之中又属TCP协议和IP协议比较重要,所以就将此协议集合以TCP/IP的方式进行命名。…
暂无图片
编程学习 ·

企业人力资源管理项目SSH+EXTJS+MySQL整合开发源码分享

企业人力资源管理项目,是SSH+EXT+MySQL+MD5...... 功能有:会话过滤、MD5加密、文件上传、权限设置、报表统计......运行环境jdk7tomcat7mysqlIntelliJ IDEA 项目技术(必填)springstrutshibernate 项目截图运行截图关注点赞之后,私信关键字【源码】即可免费获取~
暂无图片
编程学习 ·

docker常用简单命令

检查内核版本 uname -r 如果内核版本小于3.10执行 yum update 安装docker yum install docker 启动docker systemctl start docker 查看docker版本 docker -v 开机自启动docder systemctl enable docker 停止docker systemctl stop docker ///////////////////////////////////…
暂无图片
编程学习 ·

react学习记录-PropTypes 和组件参数验证

文章目录PropTypes 和组件参数验证PropTypes PropTypes 和组件参数验证 JavaScript 语言的弱类型,让我们写代码很爽,但是也很容易出 bug。 变量没有固定类型可以随意赋值,在我们构建大型应用程序的时候并不是什么好的事情。你写下了 let a = {} ,如果这是个共享的状态并且在…
暂无图片
编程学习 ·

强推#vue图片预览组件—v-viewer

强推#vue图片预览组件—v-viewer 先来介绍一下背景 项目是用vue搭的,产品给的需求是:图片列表展示,要求点击图片可以放大。 原本就是写了一个弹出框,包裹相应图片就算完成了,但是!!! 作为一个善于思考的前端娃,我一定要考虑更加全面哇,因为这些图片是病人的病历拍照上…
暂无图片
编程学习 ·

2007

All you need to do is upload the files on to your web space.
暂无图片
编程学习 ·

JavaScript之组合式继承

继承的概念 面向对象的三大特征:封装,继承,多态 封装: 将复杂的操作包裹起来,进行隐藏,简单化,安全化 继承: 拿来主义,自己没有,把别人的拿过来,让其成为自己的 JavaScript中有两种继承模型: 1.原型式继承 2.组合式继承 组合式继承就是将其他对象中的成员添加到自己…
暂无图片
编程学习 ·

SOLR_8.2_学习、使用、计划、思想、项目实践

文章目录一、项目安装部署:1.1、下载地址:1.2、解压1.3、启动1.4、浏览器访问二、项目部分配置2.1、创建核心文件夹(可以理解为数据库)2.2、将配置文件copy到meta_db中2.3、创建核心三、创建document(表)添加Field(字段)四、导入数据 documents五、查询数据5.1、查询全…
暂无图片
编程学习 ·

高绩效团队的秘密:高绩效团队的八大特征与六大打造步骤

受新冠疫情影响,世界各行各业都受到不同程度的经济冲击,在这种危机下,拥有一支高绩效团队,相信对于企业快速恢复企业元气是大有裨益的。大多数企业领导者都明白,高绩效团队是企业优秀和杰出的代表,是实现经营目标的关键,是面临危机的强大后盾。但并不是所有团队都叫做高…
暂无图片
编程学习 ·

5D3无裁切5.4K电影24P RAW视频设置、拍摄、后期全流程

在写教程之前,首先感谢繁华,送我了我达芬奇加密狗,你也可以购买,使用起来和官方2600元的没任何区别(文章最后有购买链接)相当稳定不卡顿、不闪退、全插件无水印,由于之前的收费,非发给我红包,不要都不行。 言归正传。 凡是安装过此店(下面有购买链接)摩灯固件5D3中文…
暂无图片
编程学习 ·

zig5

/* 包含头文件 */ #include "ioCC2530.h" #include <stdio.h> #include "sh10.h" #define LED1 P1_0 // P1_0定义为P1_0 led灯端口 #define uint16 unsigned short #define uint32 unsigned long #define uint unsigned int //4Bytes uint tem…
暂无图片
编程学习 ·

微信小程序使用iconfont彩色图标,真机上不显示

原代码cover-view中使用iconfont彩色图标:图标在模拟器上正常显示,但是在真机上不显示 <cover-view class="t-icon t-icon-ABC"></cover-view>解决方案如下:将cover-view标签改为view标签即可,其他部分不变 <view class="t-icon t-icon-ABC&…
暂无图片
编程学习 ·

Leetcode-面试题 17.10. 主要元素(摩尔投票法)

面试题 17.10. 主要元素 (摩尔投票法)方法一:Map方法(不满足题目空间复杂度)方法二:摩尔投票法面试题 17.10. 主要元素 题目链接:https://leetcode-cn.com/problems/find-majority-element-lcci/方法一:Map方法(不满足题目空间复杂度) class Solution { public int m…
暂无图片
编程学习 ·

疫情地图

FeiyanMap.py import requests import json from parse import parse_url import time from pyecharts.charts import Map from pyecharts import options as opts import requests import json global data_json #
暂无图片
编程学习 ·

揭秘你不曾了解的看板工具箱

转型敏捷开发的过程中敏捷团队在日常工作中最常用到的工具就是看板,看板作为一种通知类卡片,旨在传达团队中各成员的任务状态、具体任务内容等,其目的是促进团队成员的任务上下衔接,拉动开发过程中的产品价值从左向右流动。在价值的流动过程中,我们反过来又需要管理看板,…