#memory #protection #tampering

nightly protected_integer

一个简单的crate,用于防止某些变量被内存篡改工具修改。

2 个版本

0.1.1 2022年4月14日
0.1.0 2022年4月14日

#15 in #protection

MIT 协议

8KB
98 代码行

crate: protected_integer

一个简单的crate,用于防止某些变量被内存篡改工具修改。

用法

  1. 将此crate添加到Cargo.toml中的依赖项

    [dependencies]
    protected_integer = "0.1"
    
  2. 在项目中使用此crate

    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);
    

性能

根据基准测试结果,此crate几乎无成本

详细结果

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)

黑客测试

您可以克隆此仓库并执行以下命令:cargo run --example hacking_test

现在尝试用Cheat Engine黑入进程

依赖项

~775KB
~14K SLoC