WIP VMProtect SDK for rust
protected!
macro for codeSyntax:
```rust use vmprotect::protected;
protected!("NAME"; TYPE [KEY]; { /CODE/ }) ```
Protected code block is works like any other rust block, i.e:
```rust use vmprotect::protected;
// Before protection let a = {2+3}; // After protection let a = protected!("Addiction"; virtualize false; { 2 + 3 }); ```
Example:
```rust
use vmprotect::protected; use std::hint::black_box;
fn main() { // Blackboxes here is to not inline the math let a = blackbox(2); let b = blackbox(3); println!("{} + {} = {}", a, b, protected!("Adding"; ultra false; { a + b })); } ```
protected!
macro for textsSyntax:
```rust use vmprotect::protected;
protected!(TYPE "TEXT") ```
This macro returns string, which can be transformed to normal one. This string is freed when dropped, implementations is located at vmprotect::strings::{encrypted_a::EncryptedStringA, encrypted_w::EncryptedStringW}
```rust use vmprotect::protected;
// Before protection let a = "Hello, world!"; // After protection let a = protected!(A; "Hello, world!"); // Also for wide-strings: let a = protected!(W; "Привет, мир!"); ```
Example:
```rust
.into(): T
syntax supportuse vmprotect::protected;
fn main() { println!("Hello, {:?}!", protected!(A; "%Username%").into(): String); } ```
TODO Section, see docs for now
Example:
rust
println!("Your hwid is \"{}\"", vmprotect::licensing::get_hwid().to_str().unwrap());
Can be fixed by adding -C link-arg=-Wl,-headerpad,0x500
to rustc args
For cargo:
rs
export RUSTFLAGS="-C link-arg=-Wl,-headerpad,0x500"
(Based on http://vmpsoft.com/forum/viewtopic.php?f=2&t=6837&start=15#p10527)