mcpField
H
Hallucina

Hallucina

ローカル
github.com/smadi0x86セキュリティ880 週間前に更新

Hallucina について

Hallucina は LLVM 17 ベースのコンパイラツールで、単一のソースファイルや大規模なプロジェクトにコード難読化を適用します。コンパイル済みプログラムの解析を難しくしたい開発者向けで、逆アセンブラ MCP サーバーを使うワークフローにも関連します。

主な機能

  1. 01間接ジャンプの難読化
  2. 02間接関数呼び出しの難読化
  3. 03間接グローバル変数参照の難読化
  4. 04C 文字列の暗号化
  5. 05制御フローの平坦化

活用シーン

  1. 01単一の C ソースファイルの難読化
  2. 02プロジェクトのビルドへの難読化フラグ追加
  3. 03コンパイル済みコードの解析難度向上

MCP 対応

Hallucina 自体は MCP サーバーではなく、LLVM ベースの難読化ツールです。Ghidra や IDA PRO などの逆アセンブラ向けカスタム MCP サーバーと併用する用途が説明されています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Hallucina

Hallucinaは、GhidraやIDA PROなどの逆アセンブラー向けカスタムMCPサーバーとともに使用されるLLMクライアントを混乱させ、幻覚を引き起こすよう設計された強力な難読化ツールです。

Hallucinaを使えば、人間主導のリバースエンジニアリングが必須になります。LLMにリバースエンジニアリングを任せることはできません!残念でしたね、お子様たち :)

使い方

Hallucinaでは、簡単な操作で難読化手法を適用できます。以下に使用例を示します。

単一ファイルの難読化

生成されたclang(LLVM 17)を使って、単一のソースファイルを難読化するには、次のコマンドを実行します。

path_to_build/bin/clang -mllvm -irobf -mllvm --irobf-indbr test.c -o test_obfuscated

このコマンドは、フラグ-mllvm -irobfおよび-mllvm --irobf-indbrで指定された難読化手法をtest.cファイルに適用し、test_obfuscatedという名前の難読化済み出力ファイルを生成します。

以下では、元のテストコードと難読化されたテストコードの違いを確認できます。

差分

プロジェクトの難読化

大規模なプロジェクトでは、Hallucinaをビルドシステムに組み込んでください。

CC=path_to_build/bin/clang
CFLAGS+="-mllvm -irobf -mllvm --irobf-indbr"
./configure
make
利用可能な難読化フラグ
  • 難読化処理間の相関。
  • 間接ジャンプ。ジャンプ先を暗号化します(-mllvm -irobf-indbr)。
  • 間接関数呼び出し。対象関数のアドレスを暗号化します(-mllvm -irobf-icall)。
  • 間接グローバル変数参照。変数のアドレスを暗号化します(-mllvm -irobf-indgv)。
  • C文字列の暗号化(-mllvm -irobf-cse)。
  • プロシージャ関連の制御フローフラット化難読化(-mllvm -irobf-cff)。
  • 上記すべての機能を包括的に適用(-mllvm -irobf-indbr -mllvm -irobf-icall -mllvm -irobf-indgv -mllvm -irobf-cse -mllvm -irobf-cff)。

Hallucinaのビルド

HallucinaはLLVM 17でのビルドに対応しています。以下の手順に従ってビルド環境を設定してください。

前提条件
Windows
  1. Ninjaをインストールし、PATHに設定されていることを確認してください。
  2. C++開発ツールを含むVisual Studio 2022をインストールしてください。
Linux

次のコマンドを実行して、前提条件をインストールしてください。

sudo apt update && sudo apt install -y build-essential cmake ninja-build python3
ビルド手順
Windows
  1. x64 Native Tools Command Prompt for VS 2022を開きます。
  2. 次のコマンドを実行します。
mkdir build
cd build
cmake -DCMAKE_CXX_FLAGS="/utf-8" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb" -G "Ninja" ../llvm
ninja
Linux
  1. 次のコマンドを実行します。
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb" -G "Ninja" ../llvm
ninja

よくある問題のトラブルシューティング

コンパイルエラー

ヘッダーの不足やGCC固有の問題など、コンパイル中にエラーが発生した場合は、次の点を確認してください。

  • std::ifstreamが見つからないというエラーが報告されたファイルに#include <fstream>を追加してください。
  • 互換性を確保するため、最新バージョンのGCCまたはClangを使用してください。
ビルド中のメモリの問題

ビルド中にメモリの問題が発生した場合は、次の手順でスワップメモリを増やせます。

Linux

スワップメモリを一時的に増やすには、次のコマンドを実行します。

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

この変更を永続化するには、/etc/fstabに次の行を追加します。

/swapfile none swap sw 0 0

重要な注意事項

ビルド後は、build/binディレクトリにある生成済みのclangバイナリを使用してください。このバージョンのclangはLLVM 17をベースとしており、Hallucinaが提供する難読化機能が含まれています。


Hallucinaへの貢献

貢献を歓迎します!開発環境の設定方法とプルリクエストの送信方法については、DEVELOPMENT.mdをご覧ください。


ライセンス

このプロジェクトはGNU v3 Licenseのもとでライセンスされています。詳細についてはLICENSEファイルをご覧ください。

参考資料

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。