2 个版本
0.1.1 | 2020年12月27日 |
---|---|
0.1.0 | 2020年12月21日 |
#4 in #protected
用于 vmprotect
350KB
93 行代码(不包括注释)
包含 (Windows DLL, 120KB) lib/VMProtectSDK64.dll, (Windows DLL, 100KB) lib/VMProtectSDK32.dll, (ELF lib, 27KB) lib/libVMProtectSDK32.so, (ELF lib, 33KB) lib/libVMProtectSDK64.so, (静态库, 8KB) lib/VMProtectSDK32.lib, (静态库, 8KB) lib/VMProtectSDK64.lib
vmprotect
WIP VMProtect SDK for rust
基本的 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);
}
许可证
待办事项部分,目前请参阅文档
硬件 ID
示例
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)