Il2cpp逆向:global-metadata解密 前言 关于Il2cpp的资料网上有很多,简而言之,Il2cpp就是unity用来代替原来的基于Mono虚拟机的一种新的打包方式,它先生成IL(中间语言),然后再转换成Cpp文件,提高运行效率的同时增加了安全性。原本基于Mono的打包方式极其容易被逆向,现在市面上的新游戏基本上都是用Il2cpp的方式...
IL2CPP 逆向初探 Preface il2cpp 将游戏 C# 代码转换为 C++ 代码,然后编译为各平台 Native 代码。 虽然游戏逻辑是以 Native 代码运行, 但依然要实现 C# 某些语言特性(如GC、反射),il2cpp将所有的 C# 中的类名、方法名、属性名、字符串等地址信息记录在 global-metadata.dat 文件。
通过逆向工具提取出的信息,分析并理解原始C#代码的逻辑和功能。 结论 IL2CPP是Unity提供的一种强大的脚本编译技术,通过将C#代码转换为C++代码并编译为原生机器代码,显著提高了应用程序的性能和安全性。然而,通过逆向工程的方式仍然可以获得一定程度的C#源代码信息。为了应对逆向工程的挑战,开发者需要采取加密、混淆等防护...
如何从未加密的AssetBundle里提取资源文件,那网上的教程可太多了,不写了。 7.提供一种暴力逆向获得AssetBundle的思路 直接hook UnityEngine.AssetBundleModule程序集内的UnityEngine.AssetBundle类的几个Load函数,只要项目没有魔改AssetBundle那一定会经过这几个函数。 缺陷:只能逆向出加载过的AssetBundle,想要全逆向需要把游戏...
本文将着重分析 IL2CPP 模式下,游戏应该如何应对 IL2cppDumper 的逆向分析,并提供行之有效的解决方案。 首先,我们来了解一下,IL2CPP 是如何被破解的。 在Unity IL2CPP 模式下,游戏逻辑是以 Native 代码运行, 但依然存在 C# 某些语言特性(如GC、反射),会将所有的 C# 中的类名/属性名/字符串等信息记录在 glob...
IL2CPP.so 与 global-metadata.dat关系 正是这一机制为外挂制作与游戏破解带来了便利。破解者只需将游戏包进行解压,找到 libil2cpp.so 与 global-metadata.dat 文件,拖入input文件夹,运行一个命令行,即可完成逆向分析。在未加密情况下 IL2cppDumper 可以解析出 .cs / .json 等文件 随后,可以将解析出的 ...
即便如此,只使用简单的IL2CPP虽然在反编译上极大的增加了难度,但是由于C#+.Net的特性,无法像传统的ELF,EXE文件等完全抹除符号,所以还是给破解者留下了很大的操作空间,破解者可以通过对内存的读写来绕过游戏内一些机制的判定,使得游戏运营防遭受损失,因此本篇文章将针对于IL2CPP这一技术探究一下逆向与破解的过程。
如果使用IL2CPP方式出包,则没有Assembly-CSharp.dll,不过,有一个IL2CppDumper工具,通过它,我们可以逆向得到Assembly-CSharp.dll,下面就教大家如何使用这个IL2CppDumper吧。 二、下载IL2CppDumper IL2CppDumper是一个开源工具,在GitHub上可以直接下载到。 地址:https://github.com/Perfare/Il2CppDumper ...
众所周知,Unity引擎中有两种脚本编译器,分别是 Mono 和 IL2CPP 。相较于Mono,IL2CPP 具备执行效率高、跨平台支持等优势,已被大多数游戏采用。 IL2CPP 模式下,可以将游戏 C# 代码转换为 C++ 代码,然后编译为各平台 Native 代码。Native 代码提高了逆向/反编译难度,可有效提高外挂开发和游戏破解的门槛。
[原创]IL2CPP 逆向初探 il2cpp 将游戏 C# 代码转换为 C++ 代码,然后编译为各平台 Native 代码。 虽然游戏逻辑是以 Native 代码运行, 但依然要实现 C# 某些语言特性(如GC、反射),il2cpp将所有的 C# 中的类名、方法名、属性名、字符串等地址信息记录在 global-metadata.dat 文件。