Hallucina 是一个强大的混淆工具,旨在使用于反汇编器(如 Ghidra 和 IDA PRO)的自定义 MCP 服务器上的 LLM 客户端感到困惑和幻觉。
Hallucina 使得人工驱动的逆向工程成为必要,LLMs 不会为我们进行逆向工程!抱歉小朋友们 :)
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)。-mllvm -irobf-cse)。-mllvm -irobf-cff)。-mllvm -irobf-indbr -mllvm -irobf-icall -mllvm -irobf-indgv -mllvm -irobf-cse -mllvm -irobf-cff)。Hallucina 支持使用 LLVM 17 进行构建。请按照以下说明设置构建环境。
运行以下命令以安装先决条件:
sudo apt update && sudo apt install -y build-essential cmake ninja-build python3
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
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>。如果在构建过程中遇到内存问题,可以通过增加交换内存来解决:
运行以下命令以临时增加交换内存:
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 提供的混淆功能。
我们欢迎贡献!请参阅 DEVELOPMENT.md,了解如何设置开发环境并提交拉取请求的详细信息。
本项目根据 GNU v3 许可证发布。详情请参阅 LICENSE 文件。