Crates.io | protected_integer |
lib.rs | protected_integer |
version | 0.1.1 |
source | src |
created_at | 2022-04-14 08:37:03.65249 |
updated_at | 2022-04-14 13:27:35.078431 |
description | A simple crate, that protects some variables from being modified by memory tampering tools. |
homepage | |
repository | https://github.com/lihe07/protected_integer |
max_upload_size | |
id | 567389 |
size | 13,387 |
A simple crate, that protects some variables from being modified by memory tampering tools.
Add this crate to dependencies in Cargo.toml
[dependencies]
protected_integer = "0.1"
Use this crate in your project
use protected_integer::{ProtectedInteger, State};
let mut my_number = ProtectedInteger::new(114514); // initialize this variable
// Check and get the value
match my_number.get() {
State::Untampered(num) => {
println!("The variable has not been tampered with");
}
State::Tampered(num) => {
println!("The variable was tampered with, but the backup variable was not");
println!("The restored value is {}", num);
}
}
// change the value
my_number.set(1919810);
According to benchmark result, this crate is almost zero-cost
Detailed result:
running 3 tests
test tests::basic_mutations ... ignored
test tests::bench_getting ... bench: 0 ns/iter (+/- 0)
test tests::bench_setting ... bench: 4 ns/iter (+/- 0)
You can clone this repo and execute cargo run --example hacking_test
Now trying to hack the process with Cheat Engine