IL2CPP是Unity的AOT编译技术,将C#代码编译为C++再编译为native代码。虽然IL2CPP比Mono更难逆向,但Zygisk-Il2CppDumper等工具可通过运行时注入提取完整的类结构和方法名。金丝雀安全提供专业IL2CPP保护方案。
IL2CPP Dump攻击流程
- 攻击者安装Zygisk-Il2CppDumper模块
- 模块通过Zygisk注入目标游戏进程
- Hook il2cpp_init函数,获取IL2CPP运行时结构
- 遍历IL2CPP元数据,提取类名、方法名、字段名
- 生成dump.cs文件,包含完整的类结构信息
- 攻击者据此定位关键函数进行Hook
金丝雀安全IL2CPP三层防御
第一层:早期检测
在游戏init阶段最开始执行检测,赶在dump完成前发现注入。检测LSPosed注入结构和Zygisk痕迹。
第二层:高速监控
50ms轮询专用线程监控dump.cs文件,比通用循环快3倍。发现dump文件立即删除并触发闪退,确保攻击者无法获取完整数据。
第三层:通用循环检测
150ms通用循环持续检测,覆盖所有检测策略,提供持续保护。
dump文件检测策略
不依赖固定文件名,扫描数据目录下所有.cs文件,验证内容以"// Image "开头(Il2CppDumper输出特征)。攻击者改名也无法绕过。
IL2CPP保护会影响游戏启动速度吗?
早期检测在init阶段执行,耗时<10ms,对启动速度无可感知影响。