Hermes 是专门针对 React Native 应用而优化的全新开源 JavaScript 引擎。对于很多应用来说,启用 Hermes 引擎可以优化启动时间,减少内存占用以及空间占用。从 React Native 0.70 版本开始 Hermes 已经默认启用,无需开发者再做任何配置。
也就说在0.70 后基本上 index.android.bundle是Hermes的bytecode,没办法直接查看源码,需要借助其他工具进行反编译。
Hermes官方提供了hbcdump工具,可以进行反编译,但使用起来比较麻烦,有另一个开源工具hbctool可以对hermesbytecode进行反编译与回编译
https://github.com/bongtrop/hbctool 提供了59, 62, 74, 76版本的反编译
https://github.com/niosega/hbctool/tree/draft/hbc-v84 对84版本的Hermes进行补充
安装可以反编译84版本的hbctool
pip install https://github.com/niosega/hbctool/archive/ac6fabb69a7229ed9764997d153d4f703d1381aa.zip
反编译
hbctool disasm index.android.bundle bundle
回编译
hbctool asm bundle index.android.bundle.re
这里我安装的时候出现了一个问题 :
-bash: hbctool: command not found
并没有自动配置全局命令
这时候可以去看下 pip install 完成后的日志
这个就是安装路径,进入到该文件夹:
执行 python3 __init__.py
等同于执行 hbctool
。