Senbei Android

用于静态还原 Android 版受保护的 libil2cpp.so 和 IL2CPP global-metadata.dat。生产路径已经完全 Rust 化,不执行保护器代码,也不依赖 Unicorn、IDA 或 Python。

兼容性

游戏 平台 版本 架构 libil2cpp.so global-metadata.dat
リバースブルー×リバースエンド Android 1.28.2 AArch64 支持 v31 MethodDef token

当前 SO 实现针对该版本的 Stage 2 模块格式,运行时会从模块产物中发现 0x9B 的种子、AES-256 key schedule 和相关配置,不硬编码样本 offset。 metadata 默认使用模块 0x0C 中确认的 seed 0xA6FAE968

构建

cargo build --release

生成的程序为:

target\release\senbei-android.exe

还原 libil2cpp.so

senbei-android restore-so INPUT OUTPUT --index INDEX_JSON --report REPORT_JSON

示例:

senbei-android restore-so `
  Native\libil2cpp.so `
  Native\libil2cpp_restored.so `
  --index Native\libil2cpp_stage2_modules\index.json `
  --report Native\libil2cpp_restore_report.json

省略 --index 时,默认读取输入文件同目录下的:

libil2cpp_stage2_modules\index.json

可选参数:

  • --dump-aux FILE:保存解码后的辅助 ELF 数据。
  • --outer-only:只还原主容器,不物化辅助动态链接表。
  • --preserve-entrypoint:保留保护器入口点;正常干净输出不应使用此项。

完整还原会静态处理 0x9B/0x9D/0x9E 数据,恢复 ELF load image、隐藏动态 符号、字符串、SysV/GNU hash、version、.rela.dyn.rela.plt,移除 SHT_LOUSER 私有区并将入口点归零。

还原 metadata

senbei-android restore-metadata INPUT OUTPUT --report REPORT_JSON

示例:

senbei-android restore-metadata `
  Package\base\assets\bin\Data\Managed\Metadata\global-metadata.dat `
  Package\base\assets\bin\Data\Managed\Metadata\global-metadata_restored.dat `
  --report metadata_restore_report.json

可用 --seed 0xA6FAE968 显式指定十六进制 seed,也支持十进制。还原操作是 幂等的:已规范化的 image 会保持不变。

Workspace

Crate 职责
senbei-android-cli 命令行参数解析与结果输出
senbei-android-io 路径推导、原地覆盖保护、原子写入与 JSON 报告
senbei-android-elf AArch64 ELF 还原与结构验证
senbei-android-crypto 0x9B/0x9D 容器、AES、Huffman/LZ 和字变换
senbei-android-metadata v31 MethodDef token 静态逆变换与覆盖验证
S
Description
Static Crackproof-protected binaries unpacker
https://senbei.momokko.moe/
Readme AGPL-3.0
824 KiB
Languages
Rust 96%
JavaScript 2.1%
CSS 1%
HTML 0.5%
Markdown 0.4%