エルメスのバイトコードを分解して組み立てるためのコマンドラインインターフェイス。
Reactネイティブチームは、Reactネイティブアプリケーションを実行するために独自のJavaScriptエンジン(Hermesという名前)を作成したため、JavaScriptソースコードはしばしばHermes Bytecodeにコンパイルされます。侵入テストプロジェクトでは、一部のReactネイティブアプリケーションがすでにエルメスエンジンに移行されていることがわかりました。それらのアプリケーションを分析またはパッチを当てることは本当に私に向かっています。したがって、Hbctoolを作成して、ペンテスターがエルメスのバイトコードをテストするのを支援しました。
Hermesは、AndroidでReactネイティブアプリを実行するために最適化されたオープンソースJavaScriptエンジンです。多くのアプリの場合、エルメスを有効にすると、起動時間が改善され、メモリの使用量が減り、アプリのサイズが小さくなります。この時点で、エルメスはオプトイン反応ネイティブ機能であり、このガイドではそれを有効にする方法について説明します。
このツールの研究と開発を支援してくれたErbazzとJusmisticに感謝します。
詳細については、ご覧ください。
https://suam.wtf/posts/react-native-application-tatic-analysis-en/

MP4形式を使用したこのビデオは、/image /hbctool_example.mp4にあります。
HBCTOOLをインストールするには、PIPを使用するだけです。
pip install hbctool
hbctool --helpを実行して使用してください。
hbctool --help
A command-line interface for disassembling and assembling
the Hermes Bytecode.
Usage:
hbctool disasm <HBC_FILE> <HASM_PATH>
hbctool asm <HASM_PATH> <HBC_FILE>
hbctool --help
hbctool --version
Operation:
disasm Disassemble Hermes Bytecode
asm Assemble Hermes Bytecode
Args:
HBC_FILE Target HBC file
HASM_PATH Target HASM directory path
Options:
--version Show hbctool version
--help Show hbctool help manual
Examples:
hbctool disasm index.android.bundle test_hasm
hbctool asm test_hasm index.android.bundle
Androidの場合、HBCファイルは通常、
index.android.bundlefilenameを使用してassetsDirectoryで見つけます。
Hbctoolは現在、次のエルメスバイトコードバージョンをサポートしています。
お気軽に問題を作成するか、マージリクエストを送信してください。とにかく、あなたはこのプロジェクトに貢献したいです。とても満足しています。
ただし、プルリクエストを提出する前にユニットテストを実行してください。
cd hbctool
python test.py
私は詩を使ってこのツールを構築します。自分で構築するには、単に実行するだけです。
poetry installpoetry buildpip install --force-reinstall dist/hbctool-<VERSION>-py3-none-any.whl