
BinAbsInspector (Binary Abstract Inspector) は、バイナリの自動リバースエンジニアリングと脆弱性スキャンのための静的解析ツールであり、Keenlab でインキュベートされた長期研究プロジェクトです。これは抽象解釈に基づき、Ghidra のサポートを受けています。アセンブリの代わりに Ghidra の Pcode で動作します。現在、x86、x64、armv7、aarch64 上のバイナリをサポートしています。
z3-${version}-win/bin を指す PATH 環境変数を追加します。z3-${version}-glibc-${version}/bin/*.so を /usr/local/lib/ にコピーします。自分で拡張機能をビルドする場合は、開発ガイドを参照してください。
gradle buildExtension を実行します。dist/${GhidraVersion}_${date}_BinAbsInspector.zip に生成されます。BinAbsInspectorは、ヘッドレスモード、GUIモード、またはDockerで実行できます。
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> -- Ghidraプロジェクトパス。
<projectName> -- Ghidraプロジェクト名。
<scriptParams> -- アナライザの引数。以下のオプションを提供します。
Ghidra GUIの場合
Window -> Script Managerを開き、BinAbsInspector.javaを見つけます。BinAbsInspector.javaエントリをダブルクリックし、設定ウィンドウでパラメータを設定してOKをクリックします。Dockerの場合
git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>
現在、BinAbsInspectorは以下のチェッカーをサポートしています:
このプロジェクトの構造は以下の通りです。詳細については、技術詳細または中国語版記事を参照してください。
├── main
│ ├── java
│ │ └── com
│ │ └── bai
│ │ ├── checkers checker implementatiom
│ │ ├── env
│ │ │ ├── funcs function modeling
│ │ │ │ ├── externalfuncs external function modeling
│ │ │ │ └── stdfuncs cpp std modeling
│ │ │ └── region memory modeling
│ │ ├── solver analyze core and grpah module
│ │ └── util utilities
│ └── resources
└── test
また、gradle javadoc でjavadocをビルドすることもできます。APIドキュメントは ./build/docs/javadoc に生成されます。
私たちは基盤としてGhidraを採用し、パフォーマンス向上のためにJImmutable Collectionsを頻繁に利用しています。
ここに、多大なご協力に感謝の意を表します!
| パラメータ | 説明 |
|---|
[-K <kElement>] | KSetサイズ制限 K |
[-callStringK <callStringMaxLen>] | コール文字列最大長 K |
[-Z3Timeout <timeout>] | Z3タイムアウト |
[-timeout <timeout>] | 解析タイムアウト |
[-entry <address>] | エントリアドレス |
[-externalMap <file>] | 外部関数モデル設定 |
[-json] | JSON形式で出力 |
[-disableZ3] | Z3を無効化 |
[-all] | すべてのチェッカーを有効化 |
[-debug] | デバッグログ出力を有効化 |
[-check "<cweNo1>[;<cweNo2>...]"] | 特定のチェッカーを有効化 |