导语:不提供任何工具,仅做思路分享。所以本教程你必须具备一定的工具自写的基础

部分游戏加固,会对主逻辑库进行混淆。当导出表混淆后,大部分情况下我们的自更会失效(基于导出函数的寻址),所有api基本消失如下方可见:

常规dump也会失效,如果单纯dat加密so不加密,难度不高问题便在于双加密涉及到动静两态的hook
为此我们基础工具准备了:ida、frida-il2cpp-bridge
根据相关资料、以及对unity源码的了解我们可以知道unityso和il2cpp导出api之间的联系。在ida中通过方法字符串定位unityso中的字符串交叉引用,可以获取到对应的方法指针 他们的关系公式大概为
设unityso基址为a,cpp基址为b,Unity指针地址为c,所求api地址为x。
即x=(a+b).指针–cpp基址
地址获取已知,但是总共几百个api手动获取到明年吗[滑稽]所以可通过Python写下ida脚本:字符串定位、交叉引用、指针反查获取到所有的指针地址。
然后根据我们上面的公式通过Frida获取到真实的所有地址。

frida-il2cpp-bridge中的寻址方法更改为匹配我们frida输出结果

再次运行frida-il2cpp-bridge开dump,就可以输出对应的cs文件。
当然由于我们已经具备了该游戏的api,frida-il2cpp-bridge的相关功能也都可以使用自吐转存dll、hook等等都可以

欢迎对游戏安全对抗方面有自己见解的兄弟,来进行交流。
