31 lines
676 B
NASM
31 lines
676 B
NASM
.CODE
|
||
|
||
Asm_CheckVmWare PROC
|
||
|
||
mov rax, 0564D5868h ; 魔法值 'VMXh',VMware端口通信固定标识
|
||
mov rbx, 0FFFFFFFFh ; RBX初始值,用于接收Hypervisor返回标识
|
||
mov rcx, 10 ; 命令号 10 = CMD_GetVersion(获取VMware版本)
|
||
mov rdx, 05658h ; VMware专属I/O端口号 0x5658
|
||
in eax, dx ; 向VMware端口发起通信请求
|
||
cmp rbx, 0564D5868h ; 判断RBX是否被改写为'VMXh'魔法值
|
||
jz vm_found ; 相等 = 检测到VMware,跳转
|
||
|
||
xor al, al ; 未找到,AL置0(FALSE)
|
||
jmp vm_end
|
||
|
||
vm_found:
|
||
mov al, 1 ; 找到VMware,AL置1(TRUE)
|
||
vm_end:
|
||
ret
|
||
|
||
Asm_CheckVmWare ENDP
|
||
|
||
|
||
Asm_VMCall PROC
|
||
vmcall
|
||
ret
|
||
Asm_VMCall ENDP
|
||
|
||
|
||
|
||
END |