一、Unity il2cpp 源码路径:Unity\Editor\Data\il2cpp\libil2cpp GitHub - 4ch12dy/il2cpp: il2cpp各个版本的源码整理二、反编译参考教程 Il2cpp逆向:global-metadata解密 | AshenOneIL2CPP Tutorial: Finding lo…
il2cpp后端打包包含c#转c++的过程,除方法名以外全部代码混淆,即,通过函数抽取对代码进行加固,打包后各脚本打包在apk包目录下的classes.dex,il2cpp打包格式及调用逻辑在apk\lib\游戏名\libil2cpp.so,各脚本的方法体在apk\assets\bin\Data\Managed\Metadata\global-metadata.dat。 il2cpp打包后端的游戏,最多只能用反...
IDA官网:https://www.hex-rays.com/ IDA有32位的和64位两个exe,要根据你反编译的文件运行对应的exe。 Unity使用IL2CPP打包时,选择的CPU架构可以选择ARMv7和ARM64,由于我上面拿的libil2cpp.so是armeabi-v7a的,也就是32位的,所以我运行的32位的IDA。 在IDA中载入libil2cpp.so,耐心等待它的解析。 假设我们...
最近反编译大厂的游戏很多游戏也开始使用il2cpp 但是如果项目第一次编译il2cpp可能会报错,报错如下 Failed running D:\Unity562p4\Editor\Data\il2cpp/build/il2cpp.exe --convert-to-cpp --emit-null-checks --enable-array-bounds-check --development-mode --compile-cpp --libil2cpp-static--platform="Andro...
IL2CPP通过将C#脚本编译为C++代码,然后再编译为本地代码,提供了额外的安全层。这种方式使得反编译和逆向工程变得更加困难,有助于保护知识产权和游戏内容的安全性。 IL2CPP生成分析 IL2CPP的代码位于\Editor\Data\il2cpp\libil2cpp\codegen,通过分析可以发现,IL2CPP采用了一种类似于虚拟机的机制。它通过将C#代码编译...
本次分析选取的是android平台的,游戏采用unity开发,使用il2cpp模式编译。 使用IL2CPP 模式编译,游戏中使用的字符串都被保存在了一个global-metadata.dat的资源文件里,只有在动态运行时才会将这些字符串读入内存。一般使用Il2CppDumper就可以读取global-metadata.dat文件中的信息,帮助反编译。
Data 转载 mob64ca141139a2 9月前 47阅读 Unity用户手册-IL2CPP 什么是IL2CPP?从技术层面上来说,我们说的IL2CPP包含了两部分:一个进行 预先编译的编译器(译注:ahead-of-time,又叫AOT,以下一律使用AOT缩写) 另外一个部分就是对虚拟机提供支持的运行时库。AOT编译器将由.NET 输出的中间语言(IL)代码生成为C++...
console.log("大小:",global_metadata_size);varfile=newFile("/data/data/"+get_self_process_name()+"/global-metadata.dat","wb");file.write(Memory.readByteArray(address,global_metadata_size));file.flush();file.close();console.log('导出完毕...');},onComplete:function(){//console.log("...
找了找并没有 Unity 的 .NET 二进制文件assets/bin/Data/Managed/Assembly-CSharp.dll,原来是用了 IL2CPP 来编译。这样一来,游戏用到的字符串等被放到了assets/bin/Data/Managed/Metadata/global-metadata.dat,而游戏二进制文件则位于lib/armeabi-v7a/libil2cpp.so。
程序集被反编译后,根据类名和方法名,可以很容易的定位并修改逻辑。 il2cpp 代码被篡改 il2cpp 虽然被编编译为 Native 模块,但可以通过 global-meta-data 文件轻松定位与 C# 代码关联的 Native 代码,也容易被篡改。 核心技术 程序集保护 对程序集中所有方法的 IL 代码加密,通过修改 Mono 引擎,运行时在 JIT 编...