Baba01hacker666/HBC-Tool
GitHub: Baba01hacker666/HBC-Tool
一个用于 React Native Hermes 字节码的反汇编与汇编工具,帮助安全研究者在 Hermes 字节码层面进行逆向分析和补丁修改。
Stars: 3 | Forks: 1
一个用于 React Native bundles 的 Hermes 字节码反汇编器和汇编器。
最初由 baba01hacker 创建,并由 Doraemon cyber team 继续维护。
## 为什么选择 hbctool
React Native 应用可以通过 Hermes 引擎发布 JavaScript,该引擎会将应用代码编译为 Hermes 字节码。这使得逆向工程、代码检查和补丁操作比处理纯 JavaScript bundles 更加困难。
`hbctool` 可以帮助你完成这些工作流,它允许你:
- 将 Hermes bundle 反汇编为可读的 HASM 表示
- 修改 metadata、字符串和指令
- 从编辑后的输出重新构建有效的 Hermes 字节码 bundle
- 使用纯 Python 路径或可选的原生 C++ 加速路径
## 功能特性
- 将 Hermes 字节码 bundles 反汇编为包含 metadata、字符串和指令的目录。
- 将编辑后的 HASM 输出汇编回 Hermes bundle。
- 可选的 C++ 加速,用于更快的低级别操作。
- 纯 Python 和原生执行路径的测试覆盖。
- 支持 Hermes 字节码版本 `59`、`62`、`74`、`76`、`83`、`84`、`85`、`86`、`87`、`88`、`89`、`90`、`91`、`92`、`93`、`94`、`95` 和 `96`。
## 安装
### 快速安装
```
python3 -m pip install hbctool-cli
```
### 本地开发安装
```
python3 -m pip install --upgrade pip setuptools wheel
python3 -m pip install -e .
```
### PIPX 安装
```
pipx install git+https://github.com/Baba01hacker666/HBC-Tool.git
```
### 构建可选的原生扩展
```
python3 setup.py build_ext --inplace
```
在运行时启用加速路径:
```
export HBCTOOL_FASTUTIL=1
```
验证原生模块是否可用:
```
python3 -c "import hbctool._fastutil, hbctool._bitcodec; print('native extensions ok')"
```
如果扩展不存在,`hbctool` 仍然可以在纯 Python 模式下工作。
## 使用方法
显示帮助:
```
hbctool --help
```
CLI 语法:
```
Usage:
hbctool disasm
[]
hbctool asm [] []
hbctool --help
hbctool --version
```
示例:
```
hbctool disasm index.android.bundle test_hasm
hbctool asm test_hasm index.android.bundle
hbctool disasm index.android.bundle
hbctool asm
```
默认情况下:
- `disasm` 写入到 `hasm/` 目录
- `asm` 从 `hasm/` 读取并写入 `index.android.bundle`
对于 Android 目标平台,Hermes bundle 通常可以在应用的 `assets/` 目录下找到,名为 `index.android.bundle`。
## 输出布局
反汇编操作会写入三个文件:
- `metadata.json`
- `string.json`
- `instruction.hasm`
这使得在重新构建之前,可以单独检查字符串、metadata 和指令。
## 基准测试
你可以使用辅助脚本对往返路径进行基准测试,并比较纯 Python 与原生路径的速度:
```
python3 scripts/benchmark_roundtrip.py Testfiles/index.android.bundle --iterations 2 --max-size-ratio 1.10 --min-core-speedup 2.0 --json output/bench/report.json
```
报告包含:
- 两种执行模式的时间计算
- 计算出的加速比
- 输出与输入的大小比例检查
- 底层 memcpy 加速检查
当配置的安全或性能阈值未满足时,脚本将以非零状态退出,这使其适合用于 CI 门控。
## 开发
运行测试套件:
```
python3 -m pytest -q
```
在启用原生路径的情况下运行测试套件:
```
HBCTOOL_FASTUTIL=1 python3 -m pytest -q
```
构建可分发的构建产物:
```
python3 -m pip install --upgrade build
python3 -m build
```
如果构建的 wheel 包含编译的扩展,它将被打上平台标签,而不是 `py3-none-any`。
## 致谢
- 原作者工作:`baba01hacker`
- 持续的维护和重制:`Doraemon cyber team`
## 许可证
本项目基于 MIT 许可证发布。请参阅 [LICENSE](/LICENSE)。标签:App安全, C++加速, HASM, Hermes字节码, JavaScript引擎, Python, React Native, 云安全监控, 云资产清单, 反汇编工具, 字节码修改, 无后门, 汇编工具, 目录枚举, 移动安全, 逆向工具, 逆向工程, 静态分析