欢迎访问网易云社区,了解更多网易技术产品运营经验。

手游外挂入侵

随着各种爆款手游的风靡,目前手机游戏的占比用户已经形成一个巨大的市场,市场上你争我夺,有将PC版本移植到手机中,也有新模式手游的推出。随着市场的扩大,除了手游产业的兴起壮大,也滋生出了手游的各种外挂产业。

现在市面上流行的手游外挂,总的来说包括了模拟触摸类、加速器、修改器,基于这些外挂涵盖的功能,就能实现目前绝大部分外挂的能力,如自动打怪升级做任务、血量无限、金币自设置、游戏速度加减等等;除了这些工具党常用的手段外,一些“专业人士”也参与了进来,针对不同游戏有不同的做法,大体可以概括成以下破解手段,注入游戏Hook相关逻辑函数、调试进程、静态篡改资源文件和代码逻辑等等,这些操作需要相关的专业知识,涉及逆向、重打包、脱壳等操作,经过这些操作可以实现更有定制化功能的外挂。接下来就分享两个在手游保护过程中所遇到的典型案例。

破解游戏下载商店

(1)案例介绍

该案例遇到的是一个专业的团队,他们负责破解游戏,向游戏中植入他们的加速器等插件,然后重打包上传到他们的应用商店中,玩家只需要下载他们的应用商店,从中找到需要的游戏,安装进入后自带各种外挂玩游戏,畅通无阻。进入游戏的界面会多一个辅助插件的窗口,提供了加减速的功能,因此需要深入分析植入的原理并找到加减速的实现。

商店页面展示

(2)案例原理分析

深入分析跟进,发现游戏进程在启动时,会加载多个新的动态库,其中包括了libsubstrate.so(此为一个著名的Hook框架,接着分析找到了他通过调用框架Inline Hook了libmono.so导出的两个方法,Hook的方法mono源码参考如下:

通过启动进程后附加,获取到Hook调用的函数,通过分析得知,mono_class_from_name函数是mono在解析DLL方法时会经过的一个函数,hook此函数后,在调用前,对参数中方法名、命名空间进行判断,最终通过调用mono_class_get_method_from_name获取到UnityEngine.Time.set_timeScale方法,该方法的作用便是设置游戏时间的流速。

Hook代码(IDA反编译):

再通过hook的第二个函数mono_runtime_invoke,进行调用该方法,将设置的参数传入,通过对游戏时间流速的更改设置,达到加速器的作用。

Hook代码(IDA反编译):

外挂接口服务提供商

(1)案例介绍

随着手游市场的崛起,外挂的增多,外挂市场的商人们似乎也意识到外挂开发者也在大量的涌进,绝大多数都能够写点脚本开发外挂,那么商人们就开始着手底层,通过找寻到的“专业人士”开发底层框架,提供接口供上层开发者调用,把逻辑的实现交给他们。

某外挂框架介绍

在最近的客户反馈中,一个游戏遇到了一个框架类定制的外挂,外挂作者通过该框架实现了一套自动化点击的脚本,完全无需人工进行操作。这类方式的实现,将底层深入的原理实现进行了封装,最后以API的形式提供给玩家,玩家仅需要一定的编程基础便可以掌握进行二次开发。

(2)案例原理分析

深入分析该框架类软件,发现它使用ROOT权限启动了一个疑似输入的可执行文件(/data/data/my.apk/app_data/input),从该路径下提取该可执行文件进行分析,从中找到了它使用app_process命令执行了一个名为input.jar的文件。

以下为IDA解析出来的伪代码,作为参考。

使用工具打开jar包查看,代码没有混淆,很轻易的就找到了关键的实现函数(具体实现原理可以参考《
 Android中模拟点击类软件实现原理探究》,这里提到过同样实现的方法):

通过jar包实现了模拟点击,与上层使用socket和其他进程进行通信,用户通过lua脚本控制代码逻辑,整个框架流程大致如此。

手游外挂辅助产业链兴起

案例介绍

收到了来自一些游戏的反馈,发现了手游外挂辅助的产业已经在阴暗的角落处开始萌芽,这些地方可能来自QQ群、贴吧、论坛、某宝等等,他们中有通过传授工具外挂使用方法达到目的的,有通过破解篡改游戏代码逻辑实现的,甚至有提供框架API调用完成的。

QQ群搜索查找

网络售卖破解版

可以看到,从Q群到淘宝,无论是工具党还是专业人士,都开始向手游市场下手,都想在这块市场获取利益。从相关游戏处了解到,不同游戏都或多或少有定制化的外挂存在。

在不断与外挂的攻防对战中,网易云易盾一直在加强巩固我们的手游加固产品对抗外挂的功能,总结了不同外挂的特性和攻击手段,在对已知外挂的抵御功能之上,推出了针对新型外挂的感知功能,做到寓攻于守、攻守兼备,新的反外挂系统,除了有新型外挂的感知功能,还有对使用外挂的用户、设备机型、外挂类型及详细特征等等进行定位,更好地对恶意用户进行取证和清理。可以
免费试用

相关文章:
【推荐】 JavaScript 如何工作:渲染引擎和性能优化技巧
【推荐】 3分钟掌握一个有数小技能:制作导航页面
【推荐】 “货品未动,数据先行”,德邦快递与网易云联合打造“智能物流”

Android手游外挂入侵----寓攻于守,方能破敌的更多相关文章

  1. Android手游《》斗地主完整的源代码(支持单机和网络对战)

    Android手游<斗地主>完整的源代码(支持单机和网络对战)下载.一个很不错的源代码. 斗地主掌游是一个独特的国内社会斗地主棋牌游戏,之后玩家可以下载网上斗地主和全世界.掌游斗地主特点: ...

  2. Python制作回合制手游外挂简单教程(上)

    引入: 每次玩回合制游戏的时候,反反复复的日常任务让人不胜其烦 玩问道的时候,我们希望能够自动刷道,玩梦幻希望能自动做师门.捉鬼等等 说明: 该外挂只能模拟鼠标键盘操作,并不能修改游戏数据 我这里使用 ...

  3. Python制作回合制手游外挂简单教程(下)

    引入: 接着上篇的博文,今天我们讲如何实现助人为乐 前期准备: 如何获取图片中指定文字的坐标? 我的思路是截取一个小区域,再根据小区域左上角的坐标获取中央坐标 例如: 获取坐上角的x和y坐标,测量x到 ...

  4. 某Android手游的lua源码逆向分析与还原

    近日分析某一款Android上面的手游,反编译后再起asset目录下可以看到加密过的脚本,lib目录下发现lua的so 初步怀疑其使用lua脚本实现的 解密函数定位 动态跟踪解密函数流程 静态分析解密 ...

  5. 破解者是如何篡改游戏内数值的,揭秘Android手游破解全过程

    由于Android系统的开放性,让人人都是开发者成为可能,也正因如此,手机APP遭受破解和盗版问题长期存在,且愈演愈烈.尤其是手游 行业,如刀塔传奇.植物大战僵尸.2048等知名游戏被破解的案例不胜枚 ...

  6. Python制作回合制手游外挂简单教程(中)

    接着上篇的博文,今天我们讲如何实现自动组队刷道 引入: 自动组队刷道的流程是先点击刷道按钮.再点击前往按钮.再点击便捷组队······ 这些操作上篇博文已经告诉我们怎么做了,利用picpick丈量坐标 ...

  7. Android手游2048核心功能

    private void swipeUp(){ //向上滑动函数 for (int x = 0; x < 4; x++) { //行从上到下 for (int y = 0; y < 4; ...

  8. 腾讯WeTest《2017中国移动游戏质量白皮书》开放预约,再为国内手游把把脉

    产品为王,质量先行.如果说2016年是爆款手游相继崛起的一年,那么2017年则更像是打磨精品.建立生态的高手切磋之年.守住一个游戏的质量生命线,方能建立健康生态,方能在如火如荼的行业竞争中角逐到最后. ...

  9. 新手做2D手游该用哪些工具?

    全球手游行业规模将突破250亿美元,越来越多的开发者开始进入手游研发领域,而作为一名菜鸟,很多时候,如果没有其他开发者的建议,会走很多弯路.一开始进入游戏研发领域的时候,你很难知道该选择什么工具.什么 ...

随机推荐

  1. [推荐]InfoQ上的深入浅出Node.js的系列文章

    InfoQ上的深入浅出Node.js的系列文章 详情如下链接:http://www.heiboard.com/?p=2081

  2. U盘操作

    一.8G的U盘被设置为2G,如何恢复 1.下载usboot 1.7 打开以后,选中U盘,点击[点击此处选择工作模式],选择[用0重置参数] ,然后点[开始].2.完成后它会提示拔下U盘,此时拔下U盘, ...

  3. 详解NXP Cortex-M3加密设置

     加密芯片是对内部集成了各类对称与非对称算法,自身具有极高安全等级,可以保证内部储存的密钥和信息数据不被非法读取与篡改的一类安全芯片的通称.使用到安全加密芯片的产品:银行加密U盾.刻录机.加密硬盘.P ...

  4. java代码输出1到100的质数

    总结:循环,循环.. package com.dfd; import java.util.Scanner; //输出0到100的质数 //要判断当到100时候,等于2的直接输出,能被2整除的不输出, ...

  5. 阿里巴巴开源项目: canal 基于mysql数据库binlog的增量订阅&消费

    背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增 量变更,不过从2010年开始,阿里系公司开始逐步的 ...

  6. Dubbo入门之一:实例1

    原文地址:http://blog.csdn.net/ruishenh/article/details/23180707?utm_source=tuicool 1.   概述 Dubbo是一个分布式服务 ...

  7. Excel开发学习笔记:界面交互与控件的布局

    遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. , ).value ...

  8. js生成邀请码(1)

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  9. Windows条件变量

    详细见MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686903%28v=vs.85%29.aspx 我们已经看到,当想 ...

  10. leetcode643

    double findMaxAverage(vector<int>& nums, int k) { double max = INT_MIN; int len = nums.siz ...