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 是一款功能强大的混淆工具,旨在迷惑使用自定义 MCP 服务的 LLM 客户端。这些 MCP 服务用于 Ghidra 和 IDA PRO 等反汇编工具。

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. 打开适用于 VS 2022 的 x64 Native Tools 命令提示符。
  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 文件。

参考资料

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。