
Rizin & Cutter を使いながらメモを取るためのノートブック!
rizinを使ったバイナリ解析のためのノートブック。各バイナリごとにメモ、コマンド、スクリプトを整理します。
rizin 0.7.0以降が必要です。
各ノートブックのページは1つのバイナリに紐づいています。バイナリ自体、そのSHA-256ハッシュ、およびセルのリストを保存します。
ページは個別の.rznbファイル(SQLiteデータベース)として~/.rizin-notebook/に保存されます。単一の自己完結型ファイルとしてエクスポートおよびインポートできます。
rizin-notebook) - メインアプリケーション。Web UIを提供し、protobuf + JSON REST APIを公開し、すべてをページごとの.rznb SQLiteファイルに保存します。NBコマンドをrizinに追加し、rizinシェルからノートブックと対話できるようにします。プラグインはオプションです。Goサーバーはブラウザだけでスタンドアロンで動作します。
Goサーバーはプラットフォームに依存しません。プラグインはビルド時に依存するRizinのバージョンに依存します。
スタンドアロンのrizinとCutterがあなたのマシンで異なるRizinバージョンを搭載している場合は、rz_notebookをそれぞれのバージョン用に一度ずつビルドしてください。両方のビルドが同じサーバーと通信し、同じ.rznbデータを共有できます。
簡単なルール:
rz_notebookビルドプロジェクトのスクリーンショットはdocs/images/以下に整理されています。
図1. ホームページビュー(セルおよびスコープベースの検索、複数モード対応)
図2. 環境設定、キーボードショートカット、サーバー側の動作のための設定ページ
図3. Webコンソールでのコマンド補完。Rizinコマンドを素早く発見・補完します。
図4. コマンドの説明と引数を探索するための組み込みコマンドヘルプと検索モーダル
図5. Rizinコアプラグイン統合。Rizinシェルから直接ノートブック操作を可能にします。
図6. Cutterプラグイン統合ビュー。Cutterインターフェース内でのノートブック体験を示しています。
図7. 追加のCutterプラグインワークフロービュー。ノートブックの使用例を示しています。
go build -o rizin-notebook .
リリースビルド時にバージョン文字列を埋め込む:
go build -ldflags "-X main.NBVERSION=$(git rev-parse --short HEAD)" -o rizin-notebook .
./rizin-notebook
デフォルトでhttp://127.0.0.1:8000/で開きます。
フラグ:
-bind 127.0.0.1:8000 address and port to listen on
-root / URL path prefix
-notebook /path/to/data data directory (default: ~/.rizin-notebook)
-debug-assets /path load templates from disk instead of embedded
-debug enable HTTP request logs
RIZIN_PATHを設定すると、パイプ実行に使用するrizinバイナリのパスを上書きできます。
「rizin-notebook-plugin/README.md」を参照してください。
「cutter-notebook-plugin/README.md」を参照してください。
Cutterが独自の組み込みRizinを搭載している場合、Cutterが読み込むrz_notebookプラグインは、その同じバンドルされたRizinバージョンに対してビルドする必要があります。
各ページはデータディレクトリ内の.rznbファイルです。これは以下を含むSQLiteデータベースです:
サーバーは全ページの高速リスト表示のためにcatalog.dbインデックスを維持します。
初回実行時に、サーバーは古いモノリシックなnotebook.db形式のページを自動的にページごとの.rznbレイアウトに移行します。
すべてのNBプラグインコマンドはprotobuf API(Content-Type: application/x-protobuf)を使用します。スキーマはproto/notebook.protoにあります。
並行してJSON APIが/api/v1/json/...にあり、CutterプラグインとブラウザUIで使用されます。