Cutterは、rizinエンジンを基盤にしたQt/C++製のGUIリバースエンジニアリングプラットフォームです。逆アセンブル・逆コンパイル・デバッグをひとつのデスクトップアプリで扱えるように設計されています。Python/Native C++両方のプラグイン機構を備え、rz-ghidraなどのコミュニティ製デコンパイラも組み込めます。
中核はsrc/core/Cutter.cpp(CutterCore)で、rizinのコア機能をC++/Qtから呼び出すラッパーになっています。CutterApplication.cppがアプリ起動時にrizinのバージョン一致確認、翻訳・フォント読み込み、Python初期化(PythonManager)、CutterCore::initializeとConfig読み込みを順に行います。widgets/以下に逆アセンブル表示・グラフ表示・16進ダンプ・関数一覧・レジスタなど多数のドックウィジェットが分かれて実装され、menus/のDisassemblyContextMenuなどからパッチ・コメント編集・型設定といった操作をrizinコマンドとして発行します。common/Decompiler.hとRzGhidraDecompiler(CUTTER_RZGHIDRA_STATIC時)により複数の逆コンパイラを差し替え可能にし、plugins/PluginManager.cppがPythonバインディング(src/bindings)とネイティブプラグインの読み込みを担っています。CMakeLists.txtとcmake/BundledRizin.cmakeがビルド時にrizinをバンドルするかシステムのものを使うかを制御します。
- STEP 01
Linuxなら AppImage をダウンロードして chmod +x のあと実行すると、ライブラリ解決の失敗やGLIBCバージョン不一致で起動しないケースに遭遇することがあります。
- STEP 02
ソースからビルドする場合、cmake実行時にCUTTER_USE_BUNDLED_RIZINやCUTTER_ENABLE_PYTHONなどのオプション選択が必要で、依存関係の解決に scripts/fetch_deps.sh の実行が求められます。
- STEP 03
起動直後にビルド時のrizinバージョンと動作環境のrizinバージョンが一致しないと、CutterApplication.cppの分岐により警告ダイアログが出て続行確認を求められます。
- STEP 04
バイナリファイルを開くとInitialOptionsDialogが表示され、自動解析レベル(AAA等)を選ぶとrizinの解析コマンドが走り、Dashboard・FunctionsWidget・DisassemblyWidgetなどに結果が反映されます。
- STEP 05
Pythonプラグインを試す場合はPreferencesのPluginsOptionsWidgetからパスを設定し、PluginManagerがロードに成功するかログで確認する必要があります。
- STEP 06
Dockerで動かす場合はdocker/Dockerfileがソースからビルドする構成のため、初回起動までにビルド時間がかかることを想定しておく必要があります。
実行に成功すれば、バイナリの逆アセンブル・逆コンパイル結果・関数一覧・文字列・インポート/エクスポート・デバッグ用レジスタやスタック表示などをGUI上でまとめて確認できるようになります。加えてPython/C++プラグインで機能拡張した状態のワークベンチが手に入ります。
READMEやDockerfileはリリース時点のものと差異がある可能性があり、実際のビルドにはrizinのサブモジュールバージョンとの整合が要求されます。
バンドルされていないシステムrizinを使う構成では、ビルド時rizinバージョンと実行時バージョンの不一致で警告が出る作りになっており、環境依存のトラブルが起きやすいです。
本レビューはファイルツリーと抜粋ソースのみに基づくため、実際のGUI挙動や各ウィジェットの詳細な見た目は確認できていません。
docker/Dockerfileはalpine上でQt5・meson・cmakeなどをフルビルドする構成のため、初回イメージ作成に相応の時間とディスク容量が必要です。
rizinエンジンをGUIで使いたいリバースエンジニアや、逆コンパイラ・デバッガ機能を1つのアプリに統合したい人に向いています。CutterApplication.cppやCutterCore、widgets/menusの構成から見て、機能範囲は静的解析からデバッグ、プラグイン拡張まで実際に広く、READMEの主張と矛盾する記述は見当たりませんでした。ただしビルド手順やバージョン整合の複雑さは実際にソースを追って初めて分かる点であり、導入前にcutter.reのBuilding Docsを合わせて読むことを勧めます。