辅助外挂-微信跳一跳

   日期:2020-07-02     浏览:108    评论:0    
核心提示:纯属娱乐请勿用于交易–C/C++简介** 这个外挂原理比较简单,通过adb驱动链接到手机,通过图片识别实现模拟用户操作,通过计算方块像素实现得到下一个方块的坐标,跳到下一个点的位置设一个随机数.**环境配置驱动下载链接 链接:https://pan.baidu.com/s/1XYHtJpIcU0ticDCyaELTuw提取码:58rm百度网盘分享首先我们先把adb驱动给配置好右键单击此电脑高级系统设置双击Path点击浏览把adb文

纯属娱乐请勿用于交易–C/C++

简介

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

环境配置

  • 驱动下载链接 链接:https://pan.baidu.com/s/1XYHtJpIcU0ticDCyaELTuw
    提取码:58rm

  • 百度网盘分享

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

  • 右键单击此电脑

  • 高级系统设置


  • 双击Path
  • 点击浏览把adb文件夹包含进来,也可以复制adb路径粘贴进来
  • meta+r输入cmd打开终端输入adb如果有以下输出,那么环境就配置好了
  • 接下来我们要连接到手机,我们要在手机中打开开发者选项中的USB调试,我的手机是redmi k20 pro MIUI12的安卓系统所以其他机型可能稍有不同,如果不会操作的话可以百度一下
  • 首先打开设置中的手机参数其他系统有的叫关于手机,连续点击下方的MIUI版本直到出现已打开开发者选项
  • *
  • 打开后进入到开发者选项中
    *
  • 勾选USB调试
  • 终端输入adb devices
  • 显示一下信息证明链接成功

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

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

  • 之后让我们的程序跑起来,我们就可以去吃饭和咖啡了,让计算机帮我们玩
#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 = ((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;
}
   --------来自奇牛学院-#残芯

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服