A simple crate that protects some integer 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};letmut my_number = ProtectedInteger::new(114514);// initialize this variable// Check and get the valuematch 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)
Clone this repo and execute cargo run --example hacking_test
Now trying to hack the process with Cheat Engine