IL2CPP攻防
整理总结一波il2cpp攻防的知识点,希望能从插件脚本小子稍微变强一点点
Unity il2cpp由来已久,由于il2cpp本身是开源的,自然也就诞生了很多针对未加密Unity项目的自动化破解工具,Hack工具,比较为人熟知的有:
- Il2CppInspector,Katy姐的作品,其个人博客:katyscode 中也有il2cpp相关知识和攻防实践
- Il2CppDumper,Perfare个人博客:il2cppdumper.com
- Cpp2IL,更加智能,自动化的IL2CPP的反编译工具
- Il2CppInterop,MelonLoader等Hook工具,可以在转储globalmetadata后非常便利的对游戏逻辑进行Hook,从而达到作弊的目的
- frida-il2cpp-bridge,运行时转储、跟踪或劫持任何 IL2CPP 应用程序,而无需 global-metadata.dat 文件
对于一些较为基础的概念和说明,网上也有很多文章分享,这里推荐大家去逛逛看雪论坛,贴几篇文章在这:
一般对IL2CPP的反编译流程是:
- ida强行分析加载流程,从内存Dump出global-metadata.dat,可以无视加密,并存储成文件,例如:IL2CPP 逆向初探
- 使用上述工具对global-metadata.dat进行反编译,得到dummy dll以及各种反编译需要的数据,里面包含了所有方法,字段的地址偏移
- ida加载可执行文件,根据地址和第二步拿到的数据,查看指定函数,字段的反汇编代码,分析逻辑
- 使用Hook工具,对相应函数Hook,强制更改逻辑
相对应的,就有很多防御方案
- global-metadata.dat魔法数字加密
- 更改Il2CppMetadataRegistration字段顺序,使自动Dump失败,不过Il2CppInspector已经做了处理
- 针对自动化反编译工具魔改il2cpp源码,使其自动化失败
- 针对动态dump工具隐藏il2cpp的系统api
- 对可执行文件(GameAssembly.dll,il2cpp.so)进行混淆加密
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 登峰造极者,殊途亦同归。!
评论