代码混淆工具

Hallucina是一款专为混淆和迷惑LLM客户端设计的强大工具,适用于与Ghidra和IDA PRO等反汇编器配合使用的自定义MCP服务器。

  • by smadi0x86
  • LLVM
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 smadi0x86/Hallucina

使用说明

幻觉

幻觉 是一个强大的混淆工具,旨在混淆和幻觉LLM客户端,这些客户端与Ghidra和IDA PRO等反汇编程序的自定义MCP服务器一起使用。

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).
  • 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进行构建。按照以下说明设置构建环境。

先决条件

视窗

  1. 安装 忍者 并确保它在你的路径中。
  2. 使用C++开发工具安装Visual Studio 2022。

Linux

运行以下命令以安装必备组件:

sudo apt update && sudo apt install -y build-essential cmake ninja-build python3

构建说明

视窗

  1. 打开VS 2022的x64本机工具命令提示符。
  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特定问题,请确保以下内容:

  • 添加 #include <fstream> 任何报告丢失的文件 std::ifstream.
  • 为了兼容性,请使用最新版本的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

重要提示

构建后,使用生成的 clang 二进制位于 build/bin 目录。此版本的 clang 基于LLVM 17,并包括Hallucina提供的模糊特征。


为Hallucina做出贡献

我们欢迎捐款!看 DEVELOPMENT.md 有关设置开发环境和提交pull请求的详细信息。


许可证

此项目根据GNU v3许可证获得许可。请参阅 许可证 文件以获取详细信息。

参考文献