13 个版本

0.2.0 2020 年 12 月 27 日
0.1.11 2019 年 9 月 12 日
0.1.4 2019 年 8 月 19 日

#926Rust 模式

每月 42 次下载

MIT 许可证

715KB
547

包含 (Windows DLL,120KB) lib/VMProtectSDK64.dll,(Windows DLL,100KB) lib/VMProtectSDK32.dll,(ELF 库,27KB) lib/libVMProtectSDK32.so,(ELF 库,33KB) lib/libVMProtectSDK64.so,(静态库,8KB) lib/VMProtectSDK32.lib,(静态库,8KB) lib/VMProtectSDK64.lib

vmprotect crates.io

正在进行的 rust VMProtect SDK

基本的 VMProtect 功能

protected 属性

您需要将此脚本添加到 vmprotect 项目中,以便使用此属性:此脚本

语法

#[protected(TYPE[, lock])]
fn some_fn() { ... }
  • TYPE: 保护类型
  • [, lock]: 需要许可证才能使用此功能。

示例

#[protected(virtualize)]
fn stringify<T: Display>(value: T) -> String {
    format!("{}", value)
}

protected! 宏用于代码

语法

use vmprotect::protected;

protected!(TYPE[, lock] "NAME"; { /*CODE*/ })
  • NAME: 将在 VMProtect GUI 中显示的名称
  • TYPE: 保护类型(根据 VMProtect 文档:mutate/virtualize/ultra)
  • [, lock]: 仅对 virtualize/ultra,需要许可证激活才能使用此功能
  • CODE: 您的代码放在这里

受保护的代码块就像任何其他 rust 块一样工作

use vmprotect::protected;

// Before protection
let a = {2+3};
// After protection
let a = protected!(virtualize "Addiction"; { 2 + 3 });

示例

fn main() {
    println!("{} + {} = {}", a, b, protected!(ultra "Adding"; {
        a + b
    }));
}

protected! 宏用于文本

语法

use vmprotect::protected;

protected!(TYPE "TEXT")
  • TYPE: 文本类型,可能值:cstr(用于常规 c 字符串)/cwstr(用于 uint16_t c 字符串(例如在 windows 中使用))
  • TEXT: 您的文本,应支持您选择的文本类型

此宏返回一个字符串,可以将其转换为普通字符串。此字符串在释放时被释放,实现位于 vmprotect::strings::{encrypted_a::EncryptedStringA, encrypted_w::EncryptedStringW}

use vmprotect::protected;

// Before protection
let a = "Hello, world!";
// After protection
let a = protected!(cstr "Hello, world!");
// Also for wide-strings:
let a = protected!(cwstr "Привет, мир!");

示例

use vmprotect::protected;

fn main() {
    println!("Hello, {:?}!", protected!(A; "%Username%").into() as String);
}

许可证

待办事项部分,现在请参阅文档

HWID

示例

println!("Your hwid is \"{}\"", vmprotect::licensing::get_hwid().to_str().unwrap());

已知问题

MacOS:文件头中的新段空间不足

可以通过将 -C link-arg=-Wl,-headerpad,0x500 添加到 rustc 参数来解决

对于 cargo

export RUSTFLAGS="-C link-arg=-Wl,-headerpad,0x500"

(基于 http://vmpsoft.com/forum/viewtopic.php?f=2&t=6837&start=15#p10527)

依赖项

~2–2.7MB
~48K SLoC