一、引言
电子游戏的兴盛不仅为玩家带来了巨大的娱乐享受,也推动了游戏产业的迅猛发展。然而,随着游戏的繁荣,黑灰产业的威胁也不断增加,给整个产业链带来了诸多问题。本文将对游戏自动化脚本进行介绍并提出相对应的防御措施。
二、游戏自动化脚本的分类
1 基本概念
游戏自动化脚本是一种利用未经授权的工具,实现游戏作弊效果的技术手段。现如今,游戏脚本的种类繁多,面对这么多的游戏脚本很有必要做一些分类,方便分析和总结这些脚本的技术和特点。
2 脚本分类
2.1 内存类:
内存类脚本的操作核心在于读取游戏内的基址、偏移等数据,并通过这些信息找到游戏内的关键数据。通过精准的内存读取,脚本能够实现一些高度自动化的操作,如倍攻、秒图、瞬移等。由于内存读取的参数准确无误,脚本的逻辑设计合理的话,通常能够保持流畅的运行,这种自动化操作在端游领域较受欢迎。
2.1 图色脚本:
图色脚本是一种纯脚本,通过找图找色工具来控制鼠标和键盘,实现自动化操作。脚本的精准度受到作者功底的影响,因为找图找色存在一定误差,脚本可能会有一些不准确性,但通常可以解决。在端游时代图色脚本并不常见,但随着手游的兴起,图色脚本在市场上变得越来越受欢迎。
2.3 脱机脚本:
脱机脚本是指无需开启游戏客户端或者开启客户端但无需进入游戏地图就能完成自动化操作。这种脚本通过协议交互,返回服务器所需指令,实现对游戏的自动化控制。
总体而言,不同类型的脚本在市场上都有其应用场景,但也伴随着游戏产业的发展,相关技术和防御手段也在不断演进。接下来我们重点了解一下在手游领域最受欢迎的图色脚本的基础知识及其防御措施。
三、图色脚本介绍
1 常用的图色脚本工具
上文提到,图色脚本是通过找图找色工具来实现自动化操作。它本质上不进入游戏内部,只是在外围通过识别游戏图片、文字等方式来模拟点击,达到获益的目的。市面上有很多现成的工具来辅助快速地编写图色脚本,在了解这些工具之前,先熟悉几个核心概念或要素。
- 无障碍模式:是Google推出为了帮助残障用户使用Android设备和应用而推出的比较特殊的service。通过无障碍服务,开发者可提供界面增强功能,来协助残障用户或可能暂时无法与设备进行全面互动的用户完成操作。
- 图色查找/节点(控件)查找:基于节点查找元素,可兼容所有机型,只要元素的对象是安卓原生 app 就行;但是如果元素的对象不是原生安卓,比如 Unity3D 的游戏,那节点查找可能就失效了(如果 UI 控件不支持),那么此时就需要改为“图色查找”,所以最好是两者都有。
- root:设备是否开启root权限,是移动APP风控策略中最基础的参数,免root是必须的,否则app首次启动的时候,就会进入灰名单,严格监控。
- 打包:打包指的是脚本可以封装成apk运行,打包的好处在于,一是可以商业化,二是可以脱离PC独立运行。
接下来介绍几款热度较高的自动化脚本工具。
- Auto.js
重点:只支持 Android,不支持 iOS;可以将脚本打包成 apk;JavaScript 编写。
Auto.js 是一款基于 JavaScript 编写的安卓自动化脚本引擎,它提供了一系列 API 接口,可以方便地实现屏幕点击、滑动、输入、截图、音量控制等操作。使用它可以快速地完成一些重复性、繁琐的任务,例如刷微信步数、自动签到、抢红包等。
可以直接在手机上运行脚本,无需连接 PC,无需 root 权限的 JavaScript 自动化软件。
由于原作者不再维护 Auto.js 项目,目前常见的两个分支:AutoX.js 和 Auto.js Pro 。
因为多用在黑灰产,被某些资本警告,导致该工具无法对某些应用进行操作 ( 例如:微信、支付宝、抖音 等 )。4.1 版本是免费版的最后一个版本,可以在所有 app 上进行操作。
AutoX.js 是在 Auto.js 4.1.1 版本基础上 fork 而来,可操作所有软件,并拥有大量 autojs pro 的功能;
Auto.js Pro 是原作者在 autojs 上提供了一个付费的工具,拥有更强大的功能,但是同样无法操作某些软件;
- EasyClick
重点:支持 Android、iOS,iOS 无需越狱也能运行;适合游戏自动化、办公自动化、自动化测试等;Java 或 JavaScript 编写,也支持混写。
EasyClick 是一个基于 Xposed 框架的安卓自动化工具,它可以帮助用户实现一些简单的自动化操作,例如屏幕上的点击、滑动等。相比 Auto.js,EasyClick 的学习曲线更低,适合初学者使用。
- Ctrl.js
重点:只支持 Android,不支持 iOS;可以将脚本打包成 apk;JavaScript 编写。
Ctrl.js 是基于 js 语法规则的自动化控制编程语言。Ctrl.js 支持 web 可视化编程,控件可自由组合拖拽,只需少量 js 代码即可一键生成安卓程序(APK)。Ctrl.js 自带IDE 在线编辑工具,是集编程、打包、云控为一体的语言平台,进入“在线开发环境”即可一栈完成。
- appium等
当然还有很多其他的自动化工具,如appium、airtest、Yyds.Auto等,它们需连接PC,也就是写好的自动化脚本,需要将手机连接到电脑,运行脚本才能生效,这种通常用来做自动化测试。
2 如何使用autoX.js编写自动化脚本
假设我要写一个自动化脚本去通过这个滑块验证码,该如何下手?
我们要把滑块滑到正确的位置,只需要知道这两个数据:滑块的初始位置和滑动距离,通过观察可以得知,滑块的初始位置是固定的,也就是说,我们只需要确定需要滑动的距离就可以解决问题,其实关键就是要找到灰度值比较低的位置。
实现这一效果的伪代码如下:
/**
* 获取缺口位置的x坐标
* 传入值 img, 识别精度(precision)
*/
function getPointX(img,precision){
var xCount = 0;
var finnalX = 0;
for(var x = 270; x 950; x += 5){ //横向遍历像素点,间隔5个像素点
// var row = "";
var tempCount = 0
for(var y = 570; y 1070; y+=5){ //找到黑点最多的y轴
if(isBlackPoint(x,y,img,precision)){
// row +="1";
tempCount += 1;
}else{
// row += "0";
}
}
if( tempCount >= xCount ){
xCount = tempCount;
finnalX = x
}
// console.log(row);
}
return finnalX
}
/**
* 判断点是否为黑色点
* 传入值 坐标(x,y), img, 识别精度(precision)
*/
function isBlackPoint(x, y,img,precision) {
var rgb = images.pixel(img,x,y); //此时获取到的是ARGB
var r = (rgb & 0xff0000) >> 16; //得到R
var g = (rgb & 0xff00) >> 8; //得到G
var b = (rgb & 0xff); //得到B
var criticalValue = 255 * (1 - precision);
if (r return true;
}
return false;
}
/**
* 判断点是否为白色点
* 传入值 坐标(x,y), img, 识别精度(precision)
*/
function isWhitePoint(x, y,img,precision) {
var rgb = images.pixel(img,x,y); //此时获取到的是ARGB
var r = (rgb & 0xff0000) >> 16; //得到R
var g = (rgb & 0xff00) >> 8; //得到G
var b = (rgb & 0xff); //得到B
var criticalValue = 255 * precision;
if (r >= criticalValue && g >= criticalValue && b >= criticalValue) {
return true;
}
return false;
}
该行为还依赖autoX.js的截图方法,用于获取屏幕的图片对象
//请求截图
//每次使用该函数都会弹出截图权限请求,建议选择“总是允许”。
if(!requestScreenCapture()){
toast("请求截图失败");
exit();
}
captureScreen("/sdcard/screencapture.png");
sleep(100);
最后结合autoX.js提供的Swipe函数,即可实现自动化地滑动。
swipe(x1, y1, x2, y2, duration)
x1 {number} 滑动的起始坐标的x值
y1 {number} 滑动的起始坐标的y值
x2 {number} 滑动的结束坐标的x值
y2 {number} 滑动的结束坐标的y值
duration {number} 滑动时长,单位毫秒
方法不止一种,也可采取灰度图片然后二值化的方式,找到灰色矩形的初始位置。
通过这个案例可以看出,aotuX.js可以很方便的模拟人工行为,在游戏app中进行一些自动化的操作。
四、黑灰产防御
手游黑灰产经常通过上述自动化脚本工具编写程序执行一系列违规行为,如批量注册、游戏内打金、广告刷屏等,这些行为不仅影响游戏的平衡,还损害其他玩家的体验。为了维护游戏的健康生态,游戏厂商势必要采取措施与黑灰产进行斗争。
在针对图色脚本程序的打击中,行为检测是一种高效的手段。主要通过深度学习、人工智能以及大数据分析,对玩家的行为数据进行全面的监测和分析。例如,通过观察玩家鼠标移动的轨迹,过于规律的点击频率、过于匀速的滑动等,都可以当作是异常特征。此外,系统还可以识别出一些群体行为的异常情况,如大量玩家同时采取相似的操作。一旦检测到这些异常数据,游戏系统可以将这些玩家标记出来,转交给人工检测,或者在极端情况下,直接进行封号处理。
具体来说,行为检测包含以下几个方面
- 点击频率和模式监测
分析玩家在游戏中的点击频率和模式。正常玩家的点击行为通常具有一定的规律,而黑灰产可能通过自动化脚本实现过于规律的点击。通过监测点击的频率和模式,可以发现异常的自动化点击行为。
- 轨迹分析
对玩家在游戏中的移动轨迹进行分析。正常玩家的移动轨迹通常会因为游戏情境而有所变化,而自动化脚本往往产生机械且规律性的轨迹。通过监测和分析轨迹的特征,可以辨别是否存在异常行为。
- 点击力度检测
利用设备的触摸屏信息,监测玩家的点击力度。正常玩家的点击力度会因为游戏情境而有所变化,而自动化脚本可能产生过于一致的点击力度。通过检测和分析点击的力度,可以识别潜在的作弊行为。
- 点击点集中度分析
监测玩家点击点的分布情况。自动化脚本可能通过固定的点击点来执行操作,导致点击点的集中度较高。通过分析点击点的分布,可以发现是否存在异常的点击行为。
- 点击响应时间监测
分析玩家点击操作的响应时间。自动化脚本往往具有非常短的响应时间,而正常玩家的点击响应时间会有一定的变化。通过监测点击的响应时间,可以辨别是否存在异常的自动化点击行为。
当然,黑灰产的防御措施远不止于此,还包括诸如账户身份信息审查、运行环境检测、风险IP识别、游戏监督机制、法律合规手段等等。
五、结语
在电子游戏的蓬勃发展背后,黑灰产业的存在一直是游戏产业面临的严峻挑战。自动化脚本的不断演进和应用使得黑灰产的威胁更加隐匿而复杂。为了维护游戏的公平性和玩家的良好体验,游戏公司可以采取多层次的防御策略。除了技术手段上的不断升级,行为分析成为一种有效手段,通过对玩家在游戏中的点击、轨迹、力度等信息的监测和分析,能够及时发现潜在的自动化脚本行为。
然而,黑灰产业与游戏公司之间的较量永远是一场技术和智力的博弈。未来,游戏产业需要不断创新,结合先进的技术手段和智能化分析,构建更加健壮的游戏安全体系,为玩家创造一个公平、有趣、安全的游戏环境。在这个共同努力的过程中,游戏产业将迎来更加光明的未来。
此文章来自于37手游——傅鹏飞
文章来源于互联网:从游戏自动化脚本开发到黑灰产防御