UnityIl2cpp手游逆向分析

admin 2026-01-26 02:45:08 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文通过自研Unity回合制游戏Demo,深入解析了IL2CPP编译机制下libil2cpp.so的结构与逻辑。利用Il2CppDumper提取符号发现,生成的dump.cs与源码在类名、方法及字段布局上高度一致。通过对构造函数、Update及IsDead函数的汇编分析,验证了源码书写顺序与内存布局顺序的差异,推测由编译器扫描顺序决定。 综合评分: 30 文章分类: 逆向分析,移动安全,二进制安全


cover_image

Unity Il2cpp手游逆向分析

哆啦安全

2026年1月23日 16:46 四川

以下文章来源于零基础学逆向 ,作者凉子不会玩

零基础学逆向 .

凉子✨分享逆向学习日记✨

纯手工制作了一个游戏Demo(有点简陋(⊙^⊙)),用于学习和逆向分析Unity IL2CPP编译后的代码结构。

跑起来看看实际效果。

游戏采用回合制,玩家攻击会削减Boss血量,同时Boss也会立即反击,对玩家造成伤害。

观察为主,分析为辅

    看一下游戏的lib下的so文件,这三个是Unity引擎Android平台的核心动态库:libunity.so、libmain.so、libil2cpp.so、burst_generated.so(burst_generated是unity性能优化支持库)

   libmain.so 和 libunity.so 属于Unity运行时的基础支撑层,负责启动引导与引擎初始化;libil2cpp.so 包含了所有由C# 编译的游戏业务逻辑,是核心功能模块

直接分析libil2cpp.so

通过观察发现,使用Il2CppDumper从libil2cpp.so提取的符号信息(dump.cs),其结构、类名、方法名及字段布局与原始C# 源码保持高度一致。

| | | — | | 变量定义和函数定义顺序与源码一致,函数申明信息一致,如Update函数的private属性,并且生成了MyBoss构造函数 |

先看一下构造函数.ctor,显然是调用父类构造(遵循先构造基类、再构造派生类规则)

      1) Start函数

偏移 0x28 确为 MyBoss 类中的 m_hp 字段。查看 dump.cs 中的类定义可证实,m_hp字段存储了Boss的生命值。

汇编实现与源码一致

      2)Update函数

Update 函数内部按序调用了两个方法:IsDead() 与 UpdateHP_Viewer(),首先检查Boss是否死亡(IsDead),然后更新血量的UI显示(UpdateHP_Viewer

        3)IsDead函数

    异常处理,如果this指针(即MyBoss对象)为NULL,则会抛出Il2CppExceptionWrapper异常。

        设置MyPlayer.m_result_text的text属性(但是这里很奇怪的是这里调用的不是TMPro.TMP.Text的SetText函数)

调用SetActive函数禁用对象

m_hp_viewer.text

通过hook发现Text.text走的是UnityEngine.UI命名空间下Text类的set_text函数(text属性对应的set方法)

      根据观察,函数在源码中的书写顺序与其编译后在代码段(.text节)中的存储顺序没有相关性。

我在C# 中定义的方法书写顺序为 StartUpdateAttackPlayerUpdateHP_ViewerIsDead

      而代码在内存中布局顺序是Start、Update、IsDead、UpdateHP_Viewer、AttackPlayer。

       推测是编译器根据代码扫描顺序来布局的,最后Myboss类扫描完成没有发现用户没有定义构造函数,最后生成的默认构造函数

       调整了一下结构(手动定义了构造函数并初始化血量),验证如下:

APP逆向分析工具V4.5

APK安全加固平台V5.2

Python逆向分析工具V2.5

Unity手游无Root注入工具

Android智能取证系统V1.1.8

Android智能调试分析工具V7.5

Python字节码反编译工具(逆向分析)

Python字节码反编译逆向分析(高级篇)

Android Apk逆向分析工具(jadx-ai-mcp)

逆向交流群|Android智能调试工具(下载地址)

Smali/AAR/JAR/DEX/APK逆向分析转换工具V2.5

Android病毒分析工具V3.2

鸿蒙安全交流群和移动安全交流群,需要定制版安全测试机型、定制版脱壳机,定制版移动安全分析工具,商务合作,添加作者微信,微信号:cd_ccms_sec

定制版ROM机型(逆向分析)

AI对于普通人来说是翻身的机会(2026)

鸿蒙HarmonyOS Next系统提取HAP包指南

Android逆向视频资料(2025)

链接: https://pan.baidu.com/s/18bQwLJgv4vUKgLC-XqtxWg 提取码: 46s4

Android系统ROM定制(课程)

AOSP源码定制-内核驱动编写

Android系统ROM定制汇总篇

Android10至16系统ROM定制篇

AOSP源码定制-对root定制的补充

AOSP Android10定制su隐藏root

Android7至16系统ROM定制篇(2025)

Android12定制版安全测试手机(Pixel3)

AOSP源码定制-so注入并集成hook框架

AOSP源码定制-修改ART实现smali追踪

Android7至Android16系统定制篇(魔改)

AOSP开机动画定制指南(基于Android13)

基于QEMU/KVM定制Android10至16系统

Android10至16系统定制脱壳机(安全测试机)

Android10至16系统ROM定制(脱壳和安全测试)

AOSP Pixel4 Android13系统定制(编译问题解决)

Android系统定制绕过检测(入门到精通-建议收藏)

Android10以上系统定制Root权限(隐藏Root权限)

Android系统定制实现无人直播技术架构和解决方案

云手机Android13系统定制虚拟摄像头(Redroid魔改篇)

Android6.0至13系统定制版手机(适合于开发/安全研究)

Android15系统定制自定义系统服务的完整流程及代码实现

Android应用Root检测通杀篇(ROM定制过Root/Hook等检测)

Android10以上定制版手机+移动端智能调试分析软件(VIP试用版)

从零定制Android15:修改Build.prop与内核态绕过设备指纹检测

Android10至16系统定制中实现同时打印JNI(Native)堆栈和Java堆栈

Android开发智能调试分析软件V7.5

链接: https://pan.baidu.com/s/1cSibTh8nDMwsEvJ59Oblvg 提取码: rx32

使用方法

先注册、再输入密码cd_admin_001&2025_001,点击登录!


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:哆啦安全 《Unity Il2cpp手游逆向分析》

AI+skill=MY 网络安全文章

AI+skill=MY

文章总结: 本文介绍利用AI构建个性化代码审计助手的方法,通过NotionMCP整合个人笔记,结合ClaudeCode与skill-creator生成Java审
评论:0   参与:  0