Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
gemma_crackme_tutorial — GoogleのGemma 4 E4BローカルAIモデルを使用してGhidraでWindowsのクラックミーをリバースエンジニアリングするためのステップバイステップのチュートリアル。ローカル推論のセットアップと自動的な関数/変数のリネーミングを含む。 | Kitploit
ツール/GitHubGitHub/markoglasgow/gemma_crackme_tutorial
リバースエンジニアリングデバッガバイナリ解析機械学習学習と教育AI支援リバースエンジニアリング
GitHubmarkoglasgow/gemma_crackme_tutorial

gemma_crackme_tutorial

GoogleのGemma 4 E4BローカルAIモデルを使用してGhidraでWindowsのクラックミーをリバースエンジニアリングするためのステップバイステップのチュートリアル。ローカル推論のセットアップと自動的な関数/変数のリネーミングを含む。

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る
353335ヶ月前Kitploit レビュー済み

GoogleのGemma 4 E4BローカルAIモデルを使って簡単なCrackmeをリバースエンジニアリングする

Googleがリリースした新しいGemma E4Bオープンウェイトローカルモデルを試していたところ、ローカルオフラインでのリバースエンジニアリングシナリオで非常に成果が上がっていることに驚きました。このチュートリアルでは、ローカルAIが多くの基本的なリバースエンジニアリングタスクに十分対応できるようになったこと、そしてこれから急速に改善が進むであろうことを広めるために書いています。

リバースエンジニアリングとAI

新しいバイナリをリバースする上で最も退屈な部分の1つは、最初の段階で、重要な関数や変数について何の手がかりもないことです。リバーサーは、文字列参照を見る、バイナリ差分、類似関数のマッチングなど、着手するための多くのテクニックを持っています。

AIはここで非常に役立ち、私はOpenAI APIを使ってバイナリに注釈を付けたり、デコンパイラの出力を整理したりすることに個人的に大きな成功を収めてきました。しかし、これらのAPIを使用するにはいくつかの欠点があります。

  • コスト - デコンパイルと逆アセンブルは大量のトークンを生成します。APIはトークンごとに課金されるため、大きなバイナリを分析するにはかなりの金額がかかる可能性があります。毎週更新される多数のバイナリを含む大規模なターゲットを扱う場合、これらのコストはすぐに膨らみ、趣味でリバースエンジニアリングをする人には手が出せません。

  • プライバシー - リモートAPIを使用する場合、AIのホストはあなたが何をしているかを把握できます。これはプロフェッショナルなシナリオでは受け入れられない場合があります。

  • 制御 - リモートAPIに依存している場合、どのモデルが提供されているかやモデルの品質を制御できません。ミッションクリティカルな作業でそれらに依存している場合、遅くなったりダウンしたり必要なときに使えなくなったり、出力品質が低下して役に立たなくなったりする可能性があります。

独自のローカルAIモデルを実行することで、これらの問題点のいくつかに対処できます。

  • コスト - ホスト型サービスに依存するよりも、ローカルモデルを実行する方がはるかに安価な場合があります。ローカルモデルはおそらく優良プロバイダーのものより小さく低速ですが、十分に優れており、妥当な時間で動作するなら、特に大量のデータを簡単なタスクで処理する場合には、独自モデルを実行してお金を節約することは理にかなっています。

  • プライバシー - モデルをローカルで実行する場合、ネットワークコールは発生せず、プライバシーを完全に制御できます。自分のマシンで何にモデルを使っているかを誰も見ることはできません。

  • 制御 - オープンウェイトモデルの素晴らしさは、誰もそれを奪うことができないことです。OpenAIやAnthropicは、いつか価格引き上げやAPIの明示的な削除によって、SotAモデルを利用できなくするかもしれません。しかし、オープンウェイトモデルを使えば、良くも悪くも、自分の運命を自分でコントロールできます。

ローカルAIモデルには欠点もあります。

  • サイズ - モデルが大きいほど、インテリジェントになります。しかし、ほとんどの大規模モデルはコンシューマーハードウェアに収まりません。そのため、ローカルモデルを実行している場合、おそらくSotA(最先端)モデルの10分の1から100分の1の大きさのモデルを実行していることになります。このサイズの減少はモデルの知能の低下に直結し、ChatGPT/CodexやClaudeのようなSotAモデルで当然と思われている多くのタスクには不向きになります。

  • 速度 - ローカルモデルはおそらく、AI APIを使用する場合よりもマシン上で低速に動作します。これもコンシューマーハードウェアの制限と、APIプロバイダーが行うことができるトリックの一部が一般的には利用できないことによるものです。

  • 設定 - ローカルモデルの実行は、中古のノートパソコンでLinuxを動かそうとするのと、Apple Storeで新品のMacBook Airを買うのとの違いに似ています。CodexやClaude Codeの体験はAIにおけるApple Storeの体験です。ローカルAIモデルの体験は、ガレージでフェドーラ帽をかぶった男がガタガタのコンピューターを叩いて動かそうとしているようなものです。最低限、以下のことを気にしなければなりません。

    • 適切なハードウェアの入手
    • GPUドライバ
    • 適切な推論サーバーの選択と設定
    • ハードウェアに収まり、実用的に十分な速度で動作し、目的のタスクに十分インテリジェントなモデルの選択
    • モデルに適したチャットテンプレートの使用
    • サイズ/速度とモデルの知能の間の適切なトレードオフを見つけるためのモデルの量子化の探求
    • モデルへの正しいプロンプト
    • 適切なハーネスの選択、または既存のものが機能しない場合の独自ハーネスの作成

これは簡単な道のりではなく、多くの人が諦めて、ローカルAIモデルはそのタスクに適していないと思い込んでしまいます。なぜなら、適切なハードウェア/モデル/設定/プロンプト/ハーネスの組み合わせを見つけられなかったからです。多くの場合、彼らの言う通りですが、このチュートリアルがローカルモデルがどこまで進歩したか、リバースエンジニアリングにどのように役立つかを示し、人々にローカルAIに挑戦するきっかけを与えることを願っています。

リバースエンジニアリングのセットアップ

  • クラックミーはCrackmes.oneからダウンロードした非常にシンプルなWindows用クラックミーです。こちら: https://crackmes.one/crackme/69e13f938afd9d6c48b488fd

(アーカイブパスワードは crackmes.one です)。元のリンクが切れた場合に備えて、リポジトリ内に代替リンクをホストしています。

  • Ghidra 12.04 を逆アセンブルとデコンパイルに使用します。これを使用するには OpenJDK 21 をインストールする必要があります: https://github.com/nationalsecurityagency/ghidra

  • このチュートリアルを作成している間、私はClaude Codeでヴァイブコーディングして、AIで関数や変数の名前を変更するGhidraプラグインを作成しました。プラグインはこちらからダウンロードできます: https://github.com/markoglasgow/Ghidra_FastAIRenamer_Plugin

インストールするには、ghidra_12.0.4_PUBLIC_20260427_FastAIRenamerPlugin.zip ファイルを ${GHIDRA_HOME}\Extensions\Ghidra に移動し、${GHIDRA_HOME}\ghidraRun.bat を実行してGhidraを起動します。プラグインを有効にするには、初期画面のトップメニューで File -> Install Extensions を選択し、プラグインブラウザで FastAIRenamerPlugin の横にあるチェックボックスをオンにして、Ok をクリックします。Ghidraは再起動を促すので、すぐに実行してください。

プラグインを設定するには、次回Ghidraが起動したら、トップメニューで Tools -> Run Tool -> CodeBrowser に移動します。Ghidraが「新しい拡張機能が検出されました。設定しますか?」と表示するので、「はい」をクリックし、再度 FastAIRenamerPlugin の横のチェックボックスをオンにして、Okをクリックします。CodeBrowserが開いたら、トップメニューで Window -> Fast AI Renamer をクリックし、次に Config ボタンをクリックします。ここでAIモデルを設定できます。完了したら、プラグインウィンドウと空のCodeBrowserウィンドウを閉じます。

注: プラグインの読み込みに問題がある場合は、Ghidraでデベロッパーモードを有効にする必要があるかもしれません(File -> Configure -> Developerの横のチェックボックス)。

注: プラグインが読み込まれているかどうかは、CodeBrowserで File -> Configure -> Ghidra Core -> 青い設定ボタンをクリック -> "FastAIRenamer" でフィルター -> 名前の横のチェックボックスがオンになっていることを確認 で確認できます。

注: プラグインをアンインストールするには、最初にCodeBrowserを開き、File -> Configure -> Ghidra Core -> 青い設定ボタンをクリック -> "FastAIRenamer" でフィルター -> チェックを外す -> ok。CodeBrowserを閉じ、初期のGhidraウィンドウで File -> Install Extensions -> "FastAIRenamer" のチェックを外す。最後にGhidraを閉じ、${GHIDRA_HOME}\Extensions\Ghidra から ghidra_12.0.4_PUBLIC_20260427_FastAIRenamerPlugin.zip を削除します。拡張機能が削除されたことを確認するには、次回Ghidraを実行したときに、初期画面で Help -> Runtime Information -> Extension Points -> "FastAIRenamer" でフィルター し、何も表示されないことを確認します。ふぅ。

最後に、Visual Studioまたは他のC++開発環境がセットアップされていることを確認し、適宜クラックミーの解決策をヴァイブコーディングできるようにしてください。

ローカルAIのセットアップ

ローカルAIのセットアップは、ハードウェアと利用可能な資金によって大きく異なります。私の場合:

  • 私は Nvidia GTX 3080 を使用しており、Cuda 13.2 がインストールされています。Windowsターミナルで nvcc --version を実行するとCudaのバージョンを確認できます。

  • 私は bartowski の https://huggingface.co/bartowski/google_gemma-4-E4B-it-GGUF/blob/main/google_gemma-4-E4B-it-Q8_0.gguf 量子化モデルを使用しています。迷信かもしれませんが、分析タスクでは可能な限り量子化を少なくし、できれば完全に避けるようにしています。

  • 推論サーバーとして llama.cpp の特定のバージョン llama-b8893-bin-win-cuda-13.1-x64 を使用しています。

  • llama.cpp を以下のCLI設定で実行しています:``` ..\llama-b8893-bin-win-cuda-13.1-x64\llama-server.exe ^ --port 8090 ^ --threads 12 ^ --n-gpu-layers 256 ^ --no-mmap ^ --model "google_gemma-4-E4B-it-Q8_0.gguf" ^ --ctx-size 32768 ^ --temp 1.0 ^ --top-k 64 ^ --top-p 0.95 ^ --offline

これにより `75 tokens/sec` が得られます。これはローカルAIとしてはかなり高速です。

## ハードウェアがなくても大丈夫

利用可能なハードウェアがない、または設定に問題があるが、それでもこのチュートリアルに沿って進めたい場合は、OpenRouterにログインして無料のAPIのいずれかを使用できます。
https://openrouter.ai/models/?q=free

Googleは現在、`Gemma 4 31B` と `Gemma 4 26B-A4B` を(期間限定で)無料で提供しています。
https://openrouter.ai/google/gemma-4-31b-it:free
https://openrouter.ai/google/gemma-4-26b-a4b-it:free

...これらの無料APIは遅く、信頼性が低く、送信したすべてのデータはおそらく内部分析に記録され、次のトレーニング実行に使用されることに留意してください。それでも、このチュートリアルの目的には、これらのAPIで十分に追従できるはずです。

GhidraプラグインがOpenRouterログインを使用するように設定するには、プラグイン設定を開き、次のように入力します。```
Base URL: https://openrouter.ai/api/
API Key: <your OpenRouter API Key>
Model Name: qwen/qwen3-235b-a22b-2507

この例では、qwen3 モデルに対してプラグインを実行します こちら

Crackme の調査

crackmepls.exe を解凍して実行すると、標準的なログイン画面が表示されます。任意のパスワードを入力すると、「Access Denied」というメッセージが表示されます。``` User: marko Pass: 123 Access denied

Ghidraを開くには、`ghidraRun.bat`を実行してください。ツールバーで`File -> New Project`を選択し、`Non-Shared Project`が選択されたまま`Next >>`をクリックし、空のプロジェクトディレクトリを選択してプロジェクト名を入力します。その後`Finish`をクリックします。

次に、`File -> Import File`をクリックし、`crackmepls.exe`を選択してプロジェクトに追加します。Ghidraがファイルの詳細をポップアップ表示し、それが`x86:LE:64:default:windows`向けの`Portable Executable (PE)`ファイルであることを通知します。何も変更せずに`OK`をクリックして受け入れます。しばらく待つと、さらにファイルの詳細がポップアップ表示されるので、再度`OK`をクリックして受け入れます。最後に、プロジェクト内の`crackmepls.exe`をダブルクリックしてコードブラウザを開き、逆アセンブルを開始します。
ツールをダウンロード