首页
社区
课程
招聘
[求助]关于IN指令一个问题
发表于: 2015-12-29 01:03 2848

[求助]关于IN指令一个问题

2015-12-29 01:03
2848
下面是一段检测程序是否在虚拟机中运行的代码:

#include <windows.h>
#include <stdio.h>
BOOL gInVMWARE, gInVirtualPC;
BOOL VMWareTest()
{
BYTE PortValue1,PortValue2;
__try
{
    __asm
    {
      pushad
      pushfd
      xor ebx,ebx
      mov ecx,0xa
      mov eax, 'VMXh'        ; EAX=magic    //564D5868
      mov dx, 'VX'            ; DX=magic
      in eax, dx            ; specially processed io cmd
      cmp ebx, 'VMXh'        ; also eax/ecx modified (maybe vmw/os ver?)
      sete al;
    movzx eax, al
      mov gInVMWARE, eax;
      popfd
      popad
    }
}

代码中,在IN指令后,直接对ebx和'VMXh'进行比较,并且注释时eax/ecx也被修改了。

想请教一下,in指令会除了修改eax之外,还会修改ebx和ecx么?
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//