RetDec - リターゲット可能なマシンコードデコンパイラー チートシート
RetDec(リターゲット可能なデコンパイラー、Avastによる)は、コンパイル済みバイナリーを読み取り可能な高レベルコードに変換するオープンソースマシンコードデコンパイラーです。「リターゲット可能」が主な特性です。多くの命令セットを持つ1つのアーキテクチャーに構築されるのではなく、x86、ARM、MIPS、PIC32、PowerPCを多くの命令セット—LLVM IRに持ち上げ、その共通表現をCまたはPythonのようなプセクドコードにデコンパイルします。スタンドアロンで実行され、IDA、Ghidra、radare2と統合します。
インストール
| Method | How |
|---|
| Release build | GitHub Releasesからプリビルド パッケージをダウンロード |
| From source | CMakeビルド(リポジトリのビルド ドキュメントを参照) |
| Docker | docker run -v "$PWD:/dst" retdec/retdec |
| Verify | retdec-decompiler --version |
基本的なデコンパイル
| Command | Description |
|---|
retdec-decompiler binary.exe | binary.exe.cにデコンパイル |
retdec-decompiler -o out.c binary | 出力パスを選択 |
retdec-decompiler --backend-no-debug binary | クリーナー出力 |
retdec-decompiler --cleanup binary | 中間ファイルを削除 |
retdec-decompiler --help | 完全なオプション リスト |
# デコンパイルして結果を読む
retdec-decompiler suspicious.exe
less suspicious.exe.c
出力形式
| Flag | Produces |
|---|
| (default) | Cソース |
-f py | Pythonのようなプセクドコード |
--backend-emit-cfg | 制御フロー グラフ |
--backend-emit-cg | コール グラフ |
--config out.json | 構造化分析設定/結果 |
| LLVM IR | デコンパイル中の中間.ll出力 |
サポートされているアーキテクチャー
| Architecture | Formats |
|---|
| x86 / x86-64 | PE, ELF, Mach-O |
| ARM / Thumb | ELF, PE, raw |
| MIPS | ELF, raw |
| PIC32 | ELF, Intel HEX |
| PowerPC | ELF |
幅広いアーキテクチャー対応により、RetDecは特に組み込みおよびファームウェア作業に有用です。MIPS および PIC32 バイナリーが一般的であり、メインストリーム デコンパイラー はより少ないを提供します。
有用なオプション
| Option | Effect |
|---|
-a arch | アーキテクチャーを強制 |
-e endian | エンディアン設定(little/big) |
-m mode | モード:bin、raw、ll |
--raw-entry-point ADDR | ロー バイナリーのエントリ ポイント |
--raw-section-vma ADDR | ロー コードの読み込みアドレス |
--select-ranges A-B | アドレス範囲のみをデコンパイル |
--select-functions f1,f2 | 特定の関数のみをデコンパイル |
# ロー ファームウェア blob:RetDecに読み込み方法を通知
retdec-decompiler -m raw -a mips -e big \
--raw-entry-point 0x80000000 --raw-section-vma 0x80000000 firmware.bin
分析機能
| Feature | Provides |
|---|
| File format detection | PE/ELF/Mach-O解析 |
| Compiler/packer detection | ツールチェーン フィンガープリント |
| Signature-based function ID | 静的にリンクされたライブラリー コードを認識 |
| Type reconstruction | 構造とタイプの復元 |
| Debug info use | DWARF/利用可能な場合のPDB |
ライブラリー関数の識別は実際には重要です:静的にリンクされたlibcの数千行をスキップし、アプリケーション自体のロジックに焦点を当てることができます。
統合
| Tool | Plugin |
|---|
| IDA Pro | RetDec IDAプラグイン |
| Ghidra | RetDec Ghidraプラグイン |
| radare2 | r2retdec |
| API | CLI/設定を介してプログラム的にデコンパイル |
RetDec対他のデコンパイラー
| Aspect | RetDec | Ghidra | Hex-Rays (IDA) | Binary Ninja |
|---|
| Cost | Free/open-source | Free/open-source | Commercial | Commercial |
| Architectures | 多い(PIC32を含む) | 多い | 多い(デコンパイラー ライセンス) | 多い |
| Interactive | いいえ(バッチ) | はい(GUI) | はい | はい |
| Best for | バッチ/スクリプト デコンパイル、組み込み | インタラクティブRE | 最高品質出力 | モダンAPI/UX |
インタラクティブな作業用にGhidraを補完します—RetDecは自動パイプラインと異常なアーキテクチャーで輝きます。
リソース