TITAN-Softwork-Solutions/Vesuki
GitHub: TITAN-Softwork-Solutions/Vesuki
Vesuki 是一个 Rust x86_64 控制流混淆工具包,通过 proc-macro 和构建时代码生成提升二进制程序的静态逆向分析成本。
Stars: 7 | Forks: 0
# Vesuki
Vesuki 是一个 Rust **x86_64** 控制流强化与混淆工具包,专为**授权的反篡改和防御性软件保护**而构建。它提供了一个 proc-macro 属性,可将带注解的函数重写为调度器式的执行形式,并注入**每次构建随机生成的“噪声块”**(熵混合、不透明分支、反汇编诱饵),以提高静态分析和基于签名的逆向工程的成本。
## 包含内容
本仓库是一个小型的 workspace,包含三个部分:
* **Vesuki 运行时 (`vesuki`)**
* 核心 runtime 函数、熵源、状态演进以及生成的逐构建块包装器。
* 用于注入逐调用点噪声的 `vesuki_call!()` 宏。
* **Vesuki proc-macro (`vesuki-macros`)**
* 用于函数和方法的 `#[VESUKI]` 属性。
* 将函数体重写为混淆的调度器形态,并插入 Vesuki 噪声调用。
* **示例/测试工具 (`tests`)**
* 演示函数和方法上属性宏的最小化示例程序。
## 核心功能


* 通过 `#[VESUKI]` 实现基于属性的函数转换
* 通过 `vesuki_call!()` 进行逐调用点噪声注入
* 每次构建随机生成代码(build script 会将生成的模块输出到 `OUT_DIR`)
* 多种“强度”驱动器:
* `vesuki_light()`、`vesuki_medium()`、`vesuki_heavy()`
* 使用 CPU 设施进行熵种子填充(可用时使用 RDSEED,回退时使用序列化的 TSC)
* 控制流噪声原语:
* 不透明谓词和门控执行
* 基于状态的块选择
* 内联汇编 nops 和反汇编诱饵
* 用于间接执行差异的随机化 thunk 库
* 为生成的包装器进行自定义段放置,以降低布局可预测性
## 工作原理
### 编译时 (Proc Macro)
`#[VESUKI]` 会对目标函数进行结构性重写:
* 根据**签名 + 函数体 token**计算稳定的 hash
* 将 `let` 绑定提升到稳定的“设置”区域
* 通过由每次构建的常数作为种子的**调度器循环**执行其余语句
* 将返回值(如果存在)捕获到内部的 `Option` 插槽中
这种转换旨在为典型的“叶子”函数和紧凑例程保持行为一致,同时使得最终的控制流变得难以直接阅读。
### 构建时 (生成的 Runtime)
`build.rs` 生成一个包含以下内容的逐构建 Rust 模块:
* 特定于构建的常数和种子
* light/medium/heavy 路径的随机化执行顺序
* 围绕“块”原语的包装函数,具有随机化的皮肤/段
* 用于引入额外间接和差异的 thunk 库
生成的模块在编译时通过以下方式包含:
```
include!(concat!(env!("OUT_DIR"), "/vesuki_gen.rs"));
```
### 运行时 (噪声注入)
runtime 提供:
* 用于逐调用点注入(由 `file:line:col` 加盐)的 `vesuki_call!()`
* 用于链接块的 `vesuki_inline::()` 和强度驱动器
* 混合熵并演进控制流选择的状态推进例程
## 环境要求
* **架构:** 仅限 `x86_64`(runtime 使用内联汇编和 x86_64 架构 intrinsic)
* **Rust 工具链:** 稳定版 Rust(proc-macro + build script + 内联汇编)
## 快速开始
### 1) 构建 workspace
```
cargo build --workspace
```
### 2) 运行示例
```
cargo run -p vesuki-tests --release
```
## 用法
### 为函数添加注解
```
use vesuki_macros::VESUKI;
#[VESUKI]
fn fib(mut n: u64) -> u64 {
let (mut a, mut b) = (0_u64, 1_u64);
while n > 0 {
let t = a.wrapping_add(b);
a = b;
b = t;
n -= 1;
}
a
}
```
### 在调用点注入噪声
```
use vesuki::vesuki_call;
#[cfg(target_arch="x86_64")]
{
vesuki_call!();
vesuki::vesuki_light();
}
```
## 实践指南
Vesuki 在应用于以下情况时最为有效:
* 小巧、高价值的例程(检查、门控、token 验证、授权许可、策略决策)
* 函数体相对紧凑的叶子函数或方法
* 可以接受额外指令和分支噪声的代码路径
为避免意外行为:
* 尽可能优先将顺序紧凑的序列包装成单个块/循环语句。
* 将 Vesuki 视为**反分析阻力**,而不是语义优化器或安全边界。
## 威胁模型适用性
Vesuki 有助于:
* 提高静态逆向工程的成本(特别是对于基于签名或模式驱动的分析)
* 增加每次构建的差异性,以减少“一个绕过适用所有构建”的情况
* 在敏感控制点周围增加执行噪声
标签:DNS 反向解析, Rust, 二进制保护, 代码混淆, 可视化界面, 控制流平坦化, 编译器宏, 网络流量审计, 通知系统, 防篡改, 静态分析对抗