
Binary Ninja用プラグイン。ローカルのOllamaモデルを統合し、逆コンパイルされたHLILコード内の関数と変数をリネームします。解析を完全にローカルかつオフラインで行うことで、プライバシーを保護します。
著者: Austin Haggard
Binary Ninja Ollama は、ローカルでホストされた ollama サーバーと統合し、AI を使用して関数と変数の名前を変更します
Ollama は、オープンソースの AI モデルを取得してローカルで実行できるツールです。 一部のモデルは高い計算能力を必要としますが、他のモデルは個人のラップトップでも実行できます。 結果は、選択するモデルによって大きく異なります :)
sidekick/openai ではなく、これを使う理由は?
このプラグインは、Binary Ninja に Ollama を統合し、以下のアクションをサポートします:
スタンドアロンのプラグインとしてインストールする場合は、Binary Ninja のプラグインパスに配置(またはシンボリックリンク)できます。 デフォルトのパスは Vector 35 のドキュメント に詳しく記載されています。
pip3 install ollama でインストールされた ollamaこれには、ollama サーバーにアクセスできるか自分でホストし、使用したいモデルをプルダウンしておく必要があります。
https://ollama.com の指示に従ってサーバーをセットアップし、試したいモデルをプルダウンしてください。 これが完了すると、サーバーが自動的に起動され、localhost:11434 でアクセスできるようになります。
関数内のすべての変数の名前を変更オプションは、関数内のすべての変数を解析し、次のプロンプトに基づいて名前の変更を試みます:
prompt = (
f"In one word, what should the variable '{variable}' be named in the below Function? "
f"The name must meet the following criteria: all lowercase letters, usable in Python code"
)

すべての関数の名前を変更オプションは、binaryview 内のすべての関数を小さい順から大きい順にループし、プロンプトに基づいて名前を変更します:
prompt = (
f"Given the following HLIL decompiled code snippet, provide a Python-style function name that describes what the code is doing. "
f"The name must meet the following criteria: all lowercase letters, usable in Python code, with underscores between words. "
f"Only return the function name and no other explanation or text data included."
)

ターゲット関数の名前変更は、すべての関数の名前変更と同じプロンプトを使用しますが、プラグインをトリガーする際に選択した関数に限定します。
ターゲット変数の名前変更は、すべての変数の名前変更と同じプロンプトを使用しますが、プラグインをトリガーする際に選択した関数に限定します。
設定は、Binary Ninja が最初に起動されたときに最初の名前変更操作が呼び出された際、または手動でトリガーした際に表示されます。適用された設定は、Binary Ninja セッション内で保持されます。
設定ウィンドウでは、ollama 内で使用する IP、ポート、モデルを設定できます。選択できるのはダウンロード済みのモデルのみです。

含まれていないもので、興味があるものはありますか?
アイデア:
このプラグインは MIT ライセンスの下でリリースされています。