游戏如何对抗 IL2cppDumper逆向分析

众所周知,Unity引擎中有两种脚本编译器,分别是 Mono 和 IL2CPP 。相较于Mono,IL2CPP 具备执行效率高、跨平台支持等优势,已被大多数游戏采用。

IL2CPP 模式下,可以将游戏 C# 代码转换为 C++ 代码,然后编译为各平台 Native 代码。Native 代码提高了逆向/反编译难度,可有效提高外挂开发和游戏破解的门槛。

IL2CPP构建项目自动步骤图

IL2CPP构建项目自动步骤图

虽然 Unity IL2CPP 在一定程度上提高了破解门槛,但并非没有弱点,市面上出现了不少针对性逆向分析工具,如 IL2cppDumper。

本文将着重分析 IL2CPP 模式下,游戏应该如何应对 IL2cppDumper 的逆向分析,并提供行之有效的解决方案。

首先,我们来了解一下,IL2CPP 是如何被破解的。

在 Unity IL2CPP 模式下,游戏逻辑是以 Native 代码运行, 但依然存在 C# 某些语言特性(如GC、反射),会将所有的 C# 中的类名/属性名/字符串等信息记录在 global-metadata.dat 文件中,IL2CPP 启动时会从这个文件读取所需要的信息。

IL2CPP.so 与 global-metadata.dat关系

IL2CPP.so 与 global-metadata.dat关系

正是这一机制为外挂制作与游戏破解带来了便利。破解者只需将游戏包进行解压,找到 libil2cpp.so 与 global-metadata.dat 文件,拖入input文件夹,运行一个命令行,即可完成逆向分析。

在未加密情况下 IL2cppDumper 可以解析出 .cs / .json 等文件

在未加密情况下 IL2cppDumper 可以解析出 .cs / .json 等文件

随后,可以将解析出的 dump.cs 文件拖入 Visual Studio 解析工具中,直接分析出源码:

使用 Visual Studio 可以解析出 .cs 文件中的代码

使用 Visual Studio 可以解析出 .cs 文件中的代码

这样一来,游戏在破解者眼里无异于“裸奔”。破解者可以利用分析出来的代码逻辑制作各类功能的外挂,甚至制作破解版,会造成游戏公平性破坏,正常付费玩家大量流失,厂商收益直接受损等严重影响。

基于这种情况,FairGuard研发了一套完善的解决方案,支持Android/iOS/PC/鸿蒙多端,目前已接入多款热门游戏并验证了出色的保护能力,主要包含以下功能:

■ global-metadata.dat 文件加密

加密 global-metadata.dat 文件,同时做到对开发者透明。开发者只需使用加固工具运行一条命令行,即可实现加密,不需要上传额外文件。

■ libil2cpp.so 加壳

由于 IL2cppDumper 需要依赖 libil2cpp.so 对应 global-metadata.dat 文件中的字符串地址,所以对 libil2cpp.so 做深度加密非常有必要。

FairGuard独创的无导出/无导入函数SO加壳方案,对 il2cpp 进行加壳。效果如下所示:

FairGuard

FairGuard加壳后il2cpp.so,无导入/导出函数

在使用加密方案后,即使从内存中 dump 出来 libil2cpp.so , 依然不会被 IL2cppDumper 正常识别,效果如下图:

加密后IL2cppDumper无法解析

加密后IL2cppDumper无法解析

此外,FairGuard还提供反外挂、防破解、资源加密功能,与引擎加固功能紧密耦合,游戏保护效果更上一层楼。

反外挂功能

针对游戏将面临一系列外挂修改风险,FairGuard研发了行为检测方案,搭配300+维度的智能感知系统,可通杀各类外挂及其变种,做到有效防护。

防破解功能

采用FairGuard业界独家技术「无API签名校验技术」,从底层出发,对游戏的引擎与代码进行加密处理,可以针对游戏包签名和文件完整性进行多重校验,防止游戏被植入恶意模块、剔除广告等。

资源加密功能

FairGuard独家资源加密方案,支持Android、iOS、PC、H5、鸿蒙多端。可为游戏资源提供高强度加密保护,同时具备高兼容性、运行消耗小、性能无影响的特点,并且支持资源在线更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫——入门

一、概念 万维网之所以叫做网,是因为通过点击超链接或者进入URL,我们可以访问任何网络资源,从一个网页跳转到另一个网页,所有的相关资源连接在一起,就形成了一个网。 而爬虫呢,听名字就让人想起来一个黏糊…

string类题目(上)

string类题目 题目来源(Leetcode) 题目一:仅仅反转字母 分析 这个反转的特点在于只反转字母,不反转特殊字符。 法一:如果我们让一个正向迭代器指向第一个字符,让一个反向迭代器指向最后一个字符&#xf…

ch32v307vct6从头移植FreeRTOS

使用官方的ide可以直接创建带FreeRTOS的工程,但是不利于我们学习移植,所以特此记录怎么从头开始移植FreeRTOS到CH32V307VCT6芯片使用。 下载FreeRTOS源码 首先进入https://www.freertos.org/官网,然后找到如下Download字样,进入下…

华为云通过自定义域名访问桶内对象

问题:通过将自定义域名绑定至OBS桶实现在线预览文件 例如index.html入口文件 且记 自定义域名绑定暂时不支持HTTPS访问方式,只支持HTTP访问方式 自定义域名就先不用部署https证书。 配置完毕之后,将obs桶设置为公开的即可访问 如何在浏览…

Mysql 集群技术

Mysql在服务器中的部署方法 安装MySQL依赖性 rootmysql-node10 ~]# dnf install cmake gcc-c openssl-devel \ ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen.x86_64 下载并解压源码包 使用命令tar zxf mysql-boost-5.7.44.tar.gz进行解压 源码编译安…

硬件面试经典 100 题(81~90)题

81、请问下图电路中二极管 D1、D2 有什么作用? 在 Vi 输入电压接近于零时,D1、D2 给三极管 T1、T2 提供偏置电压,使 T1、T2 维持导通,以消除交越失真。 陈氏解释 这道题参见:硬件面试经典 100 题(51~70 题…

【自动化】一共获取6600多公司信息【逆向】一页15还加密。

一、【逆向】一页15还加密。 二、【自动化】一共获取6600多公司信息 三、对于两种方式我喜欢第二种自动化 from DrissionPage import ChromiumPage, ChromiumOptions import time # chrome:version co = ChromiumOptions().set_paths(browser_path=r"C:\Users\lenovo\A…

【MySQL】MySQL表的增删改查(初阶)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 表内容操作 插入内容 按顺序插入 指定某些列插入 一次插入多行记录 插入时间 查询表内容 全列查询 指定列查询 指定表达式查询 用as取别名 ​编辑 去重查询 排序查询…

不同搜索引擎蜘蛛的功能、‌抓取策略与技术实现差异探究

搜索引擎作为互联网信息检索的重要工具,‌其核心功能依赖于背后的“蜘蛛”程序。‌这些蜘蛛程序负责访问互联网上的各种内容,‌并建立索引数据库,‌以便用户能够快速准确地找到所需信息。‌然而,‌不同搜索引擎的蜘蛛在功能、‌抓…

Axios介绍;前后端分离开发的介绍;YAPI的使用;Vue项目简介、入门;Elementui的使用;nginx介绍

1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序&#xf…

仿Muduo库实现高并发服务器——EventLoop模块

我刚开始看这个模块时,也是看不明白,什么是事件管理模块。 此时此刻,大领导的背影,还是那么清晰。结合故事模块,慢慢理。 EventLoop模块 成员: 绿色: 利用智能指针对new出来的对象进行管理&…

武汉流星汇聚:亚马逊赋能中小企业,跨境电商市场举足轻重地位稳

在全球经济一体化的浪潮中,跨境电商作为推动国际贸易的重要力量,正以前所未有的速度发展。在这场全球性的商业竞赛中,亚马逊以其卓越的市场表现、强大的技术实力和深厚的品牌影响力,稳居跨境电商市场的领头羊地位,其举…

多任务下载工具.exe

关键代码 void DownloadTask::StartDownload(const QUrl url,QFile *file,qint64 startPoint/* 0 */,qint64 endPoint/* -1 */) {if( NULL file )return;m_HaveDoneBytes 0;m_StartPoint startPoint;m_EndPoint endPoint;m_File file;//根据HTTP协议,写入RANGE…

Vue3基础2

1.Hooks 就是进行数据的封装,同一种类型的 数据 方法 计算属性 ,放在一起 命名规范 use功能名称.ts 或.js 创建一个文件夹 hooks 1.useDog.ts import { reactive,onMounted } from "vue"; import axios from "axios";export def…

[数据集][目标检测]红外场景下车辆和行人检测数据集VOC+YOLO格式19069张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):19069 标注数量(xml文件个数):19069 标注数量(txt文件个数):19069 标…

SQL AI 工具:颠覆数据库管理与分析的创新力量

一、SQL AI 工具的兴起与发展 在当今数字化的时代,数据量呈现爆炸式增长,企业和个人对于高效管理和分析数据的需求日益迫切。传统的数据库管理和查询方式,对于非技术人员来说存在较高的门槛,操作复杂且耗时。这一背景为 SQL AI 工…

VMware安装Ubuntu20.04

1. 下载 整理的镜像链接 阿里网盘: 阿里云盘分享 提取码: l7y1 2. 新建虚拟机向导 选择自定义,然后下一步。 默认配置,下一步。 选择稍后安装操作系统,下一步。 选择操作系统Linux,版本Ubuntu64位,下一…

OCC笔记:Windows下OCC的编译

一、源码下载 进OCC官网下载https://dev.opencascade.org/release即可,或直接Clone它的Git库https://dev.opencascade.org/resources/git_repository,本文用的源码库版本为7.4.0(我本机安装的VS2013,我又想用到AIS_ViewCube&…

AList嵌入动态验证码实现动态校验

前言 晓杰利用ALists创建了个网盘资源站,想着如何增加个动态验证码进行验证后才能进行访问下载,刚开始利用了固定的验证码,用户可以通过JS代码中进行绕过或直接拿到验证码,经过晓杰多次优化,最终版本支持动态获取验证…

Linux(面试篇)

目录 什么是Linux 什么是Linux内核? Linux的基本组件是什么? Bash和Dos之间基本区别是什么? 什么是Root账户 什么是Bash? 什么时CLI? Linux的目录结构时怎样的? 什么是硬链接和软链接? 什么叫CC攻击&#…