ldt_trick 不合法的检测方法在 2 个 VM 和 2 个裸机 (win+linux) 上得到了相同的结果
作者: adeliktas创建于 2023年3月17日更新于 2025年6月1日
标签bug
UCHAR ldtr[5] = "\xef\xbe\xad\xde"; ULONG ldt = 0; #if defined(ENV32BIT) _asm sldt ldtr //__asm__("sldt %0" : "=g"(ldtr)); //for linux #endif ldt = *((unsigned long *)&ldtr[0]); ldt_base == 0xdead0000 => 表示裸机 kvm/qemu VM 和 vmware VM 以及裸机 Linux 和裸机 Windows10(21h2) 都返回相同的结果: vmdetect ldt_trick(32bit)=LDT base: 0xdead0000 //g++ -m32 vmdetect ldt_trick(64bit)=LDT base: 0xdeadbeef asm 指令不会在 64 位下被调用。如果更改或允许其,则返回与在 32 位下编译运行时相同的结果。从结果来看,检测方法是无效的。
内容来源: ayoubfaouzi/al-khaser