
rizinを使用中にメモを書き留めるノートブック!
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 リッスンするアドレスとポート
-root / URLパスのプレフィックス
-notebook /path/to/data データディレクトリ(デフォルト: ~/.rizin-notebook)
-debug-assets /path 埋め込みではなくディスクからテンプレートを読み込む
-debug HTTPリクエストログを有効にする
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にあります。
CutterプラグインとブラウザUIは、/api/v1/json/...のパラレルJSON APIを使用します。