IL2CPP Dump攻击实战分析与防御

金丝雀安全技术团队 · 深度技术解析 | 返回首页
发布: 2026-06-07作者: 金丝雀安全技术团队分类: 实战案例

IL2CPP是Unity游戏最广泛使用的编译方案,而IL2CPP Dump是攻击者逆向分析Unity游戏的第一步。本文基于真实攻击场景,深度分析Zygisk-Il2CppDumper的完整攻击链,以及金丝雀安全的三层防御体系如何实现毫秒级拦截。

一、攻击链完整分析

阶段1: 环境准备 攻击者设备 → 安装Magisk → 安装Zygisk → 安装LSPosed → 安装Il2CppDumper模块 阶段2: 进程注入(Zygisk阶段) Zygote fork新进程 → Zygisk在fork后注入SO → LSPosed加载模块 阶段3: IL2CPP Hook(目标进程内) il2cpp_init被调用 → Dumper Hook il2cpp_init → 获取IL2CPP运行时指针 阶段4: 元数据遍历(目标进程内) 遍历Assembly → 遍历Image → 遍历Class → 遍历Method → 遍历Field 阶段5: dump.cs生成 格式化输出 → 写入/data/data/<pkg>/<pkg>-dump.cs → 攻击者获取完整类结构

关键时间窗口:从进程启动到dump.cs生成完成,通常需要2-5秒。防御的核心是在这个时间窗口内发现并阻止攻击。

二、Zygisk注入机制

Zygisk是Magisk提供的模块化注入框架,其注入时机在Zygote fork新进程之后、应用代码执行之前。

注入流程

  1. Zygote fork:Android所有应用进程由Zygote fork产生
  2. Zygisk pre-fork:Zygisk在fork前加载模块SO到Zygote进程
  3. 子进程继承:fork后的子进程自动继承Zygisk的SO映射
  4. 模块初始化:Zygisk回调模块的zygisk_module_entry
  5. LSPosed加载:LSPosed作为Zygisk模块,在此阶段加载目标模块

可检测的注入痕迹

痕迹1: /proc/self/maps中出现Zygisk相关SO 痕迹2: /dev/socket/.vendor_socket_hook_prop文件存在 痕迹3: /data/data/<pkg>/<32hex>/<PID>/ 下 .so + .dex + .js 共存

三、IL2CPP Hook过程

Il2CppDumper的核心是Hook il2cpp_init函数,这是IL2CPP运行时的初始化入口。

il2cpp_init() → il2cpp_domain_get() // 获取AppDomain → il2cpp_domain_get_assemblies() // 获取所有Assembly → il2cpp_assembly_get_image() // 获取每个Assembly的Image → il2cpp_image_get_class() // 获取每个Image的Class → il2cpp_class_get_methods() // 获取每个Class的Method → il2cpp_class_get_fields() // 获取每个Class的Field

四、dump.cs文件特征

// Image 0: Assembly-CSharp.dll // Image 1: UnityEngine.CoreModule.dll namespace GameNamespace { public class PlayerController : MonoBehaviour { public int health; // 0x0010 public float moveSpeed; // 0x0014 public void TakeDamage(int amount) { } public void Die() { } } }

关键特征:dump.cs文件内容固定以// Image N: xxx.dll开头,Unity游戏运行时绝不会在数据目录生成.cs源代码文件。

五、金丝雀安全三层防御

第一层:早期检测(init阶段,<10ms)

在游戏init阶段最开始执行检测,只检查铁证:dump.cs文件存在且内容以"// Image "开头 + 当前PID的LSPosed注入结构。发现铁证立即SIGKILL。

第二层:高速监控线程(50ms轮询)

50ms专用线程扫描数据目录下所有.cs文件,验证内容特征。发现dump文件立即调用unlink()删除并触发闪退。比通用循环快3倍。

第三层:通用循环检测(150ms轮询)

持续检测所有安全策略,包括Zygisk痕迹、LSPosed注入结构、dump.cs文件等,提供全面持续保护。

六、防御效果数据

指标数值
早期检测延迟<10ms
高速监控响应<50ms
dump文件删除率100%
攻击者获取完整数据概率≈0%
正常设备误判率0%
免费试用金丝雀安全

了解更多:

金丝雀反作弊 - 专业手游反作弊方案 →

26项内核级反作弊策略 · 覆盖Unity/Cocos/Unreal · 云端策略管控