首页
/ Il2CppAssemblyUnhollower 实战指南:从解析到配置的全流程掌握

Il2CppAssemblyUnhollower 实战指南:从解析到配置的全流程掌握

2026-03-31 09:27:52作者:乔或婵

Il2CppAssemblyUnhollower 是 Unity 逆向工程的核心工具,通过生成托管到 IL2CPP 的代理程序集,帮助开发者高效分析游戏逻辑与底层实现。

学习目标

  • 理解工具核心模块的功能分工
  • 掌握启动流程与关键配置参数
  • 解决常见使用场景中的技术问题

剖析核心功能模块

学习目标:识别工具的五大核心模块及其文件作用,建立整体架构认知。

Il2CppAssemblyUnhollower 的功能实现基于模块化设计,各子项目承担不同职责:

  • AssemblyUnhollower
    核心处理模块,包含程序集转换的完整逻辑。关键文件如 Program.cs 定义命令行入口,Contexts/ 目录下的 TypeRewriteContext.cs 等文件负责类型重写上下文管理,Passes/ 文件夹中的系列 PassXX 类(如 Pass50GenerateMethods.cs)实现方法生成等核心转换步骤。

  • UnhollowerBaseLib
    基础运行时支持库,提供 IL2CPP 交互的底层能力。Runtime/ 目录下的版本特定实现(如 Class_24_1_A.cs)适配不同 Unity 版本的 API 差异,Il2CppClassPointerStore.cs 等文件管理类指针存储与访问。

  • UnhollowerPdbGen
    PDB 文件生成模块,MsPdbCore.cs 处理调试符号生成逻辑,辅助逆向分析中的代码调试。

  • UnhollowerRuntimeLib
    运行时转发逻辑实现,Forwarders.cs 包含方法转发定义,确保生成代码与原始 IL2CPP 运行时的正确交互。

提示:模块间通过项目引用协同工作,核心转换逻辑集中在 AssemblyUnhollower 的 Passes 系列类中。


启动程序与配置策略

学习目标:掌握工具启动方式,理解配置参数的实际应用场景。

程序启动流程

  1. 环境准备
    克隆项目仓库:
    git clone https://gitcode.com/gh_mirrors/il/Il2CppAssemblyUnhollower

  2. 编译与运行
    通过 Visual Studio 打开 AssemblyUnhollower.sln 解决方案,设置 AssemblyUnhollower 为启动项目,直接运行或通过命令行指定参数执行。核心入口逻辑位于 AssemblyUnhollower/Program.csMain 方法。

常见配置项对比表

配置类型 关键参数 作用描述 适用场景
输出控制 --output 指定生成文件路径 自定义输出目录时
日志设置 --log-level 控制日志详细程度 调试转换问题时
版本适配 --unity-version 指定目标 Unity 版本 处理版本差异兼容性
优化选项 --no-unstrip 禁用未剥离代码生成 追求性能而非完整度时

提示:所有配置参数可通过 --help 命令查看完整说明,建议根据具体逆向目标调整组合策略。


常见问题速查

学习目标:快速定位并解决工具使用中的典型错误与性能问题。

  1. Q:生成的程序集无法加载?
    A:检查目标 Unity 版本是否匹配,通过 --unity-version 指定正确版本,参考 UnhollowerBaseLib/Runtime/VersionSpecific/ 下的版本实现。

  2. Q:转换过程耗时过长?
    A:尝试禁用非必要功能,如 --no-unstrip 跳过未剥离代码生成,或通过 --log-level warning 减少日志输出开销。

  3. Q:方法转发失败报错?
    A:检查 UnhollowerRuntimeLib/Forwarders.cs 中对应方法的签名定义,确保与 IL2CPP 原生函数匹配。


通过本文的模块化解析与实战配置指南,开发者可系统掌握 Il2CppAssemblyUnhollower 的核心能力。建议结合 Documentation 目录下的 Command-Line-Usage.md 等文档,深入探索高级功能与最佳实践。工具的持续迭代优化需要社区贡献,欢迎通过项目 issue 反馈问题或提交改进 PR。

登录后查看全文
热门项目推荐
相关项目推荐