2 个不稳定版本
0.2.0 | 2021年7月11日 |
---|---|
0.1.0 | 2021年7月9日 |
#186 在 模拟器
7KB
inside-vm
检测代码是否在虚拟机中运行。
仅在 x86 和 x86-64 上工作。
工作原理
测量调用 cpuid
时的平均 CPU 周期,并与阈值进行比较,如果值较高,则假设代码正在虚拟机中运行。
快速入门
git clone https://github.com/PicoJr/inside-vm
cd inside-vm/
cargo run --example test-inside-vm
输出:avg cycles for __cpuid: 108
与虚拟机内比较
[vagrant@archlinux vagrant]$ ./target/release/examples/test-inside-vm
输出:avg cycles for __cpuid: 30578
API
use inside_vm::inside_vm;
let inside = inside_vm();
println!("inside vm: {}", inside);
鸣谢
https://evasions.checkpoint.com/techniques/timing.html#difference-vm-hosts
变更日志
请参阅 CHANGELOG 以了解发布历史。
许可
双许可 MIT 或 Apache 许可证 V2.0。