VS2008 判断环境是否是vmware的方法
来源:互联网 发布:php还原html转义字符 编辑:程序博客网 时间:2024/05/24 02:44
BOOL __is_in_vmware()
{
BYTE var_4 = 0;
__asm
{
push ecx;
push ebx;
push esi;
push edi;
push edx;
push ecx;
push ebx;
mov eax, 'VMXh';
mov ebx, 0;
mov ecx, 0Ah;
mov edx, 5658h;
in eax, dx; //vmware中的内核驱动的某个sys中应该处理了特权指令异常,然后根据指令判断是干什么,然后修改寄存器后返回ring3
cmp ebx, 'VMXh';
setz byte ptr [var_4];
pop ebx;
pop ecx;
pop edx;
pop edi
pop esi
pop ebx
pop ecx;
};
return var_4;
}
BOOL IsVmware()
{
BOOL bRet = FALSE;
__try
{
bRet = __is_in_vmware();//非vmware下in指令会产生特权指令异常,要处理一下
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
bRet = FALSE;
}
return bRet;
}
{
BYTE var_4 = 0;
__asm
{
push ecx;
push ebx;
push esi;
push edi;
push edx;
push ecx;
push ebx;
mov eax, 'VMXh';
mov ebx, 0;
mov ecx, 0Ah;
mov edx, 5658h;
in eax, dx; //vmware中的内核驱动的某个sys中应该处理了特权指令异常,然后根据指令判断是干什么,然后修改寄存器后返回ring3
cmp ebx, 'VMXh';
setz byte ptr [var_4];
pop ebx;
pop ecx;
pop edx;
pop edi
pop esi
pop ebx
pop ecx;
};
return var_4;
}
BOOL IsVmware()
{
BOOL bRet = FALSE;
__try
{
bRet = __is_in_vmware();//非vmware下in指令会产生特权指令异常,要处理一下
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
bRet = FALSE;
}
return bRet;
}
0 0
- VS2008 判断环境是否是vmware的方法
- 判断[]是否是数组的两个方法
- java 判断是否是闰年的方法
- 判断是否是手机号码的方法
- 判断一个年份是否是闰年的判断方法
- JAVA 中两种判断输入的是否是数字的方法
- JAVA 中两种判断输入的是否是数字的方法
- Android 判断当前的界面是否是桌面的方法
- 判断一个数据是否是2的幂的方法
- JAVA 中两种判断输入的是否是数字的方法
- Android 判断当前的界面是否是桌面的方法
- android 判断手机是否是国内的手机的方法
- 判断磁盘是否是USB连接的一种方法
- 判断磁盘是否是USB连接的另一种方法
- js判断字符是否是汉字的几种方法
- js判断字符是否是汉字的两种方法
- java 判断是否是数字的两种方法
- c/vc++一个字符是否是汉字的判断方法
- android 简单的滚轮控件
- LeetCode 102. Binary Tree Level Order Traversal
- 实现点击文字选中checkbox
- exec函数族使用
- RabbitMQ学习小结(一)----hello world
- VS2008 判断环境是否是vmware的方法
- Linux common clock framework(2)_clock provider
- mysql和oracle的区别
- 通过银行卡号解析银行名称和卡别
- 关于INSTALL_FAILED_NO_MATCHING_ABIS.的个人总结
- POJ1577 二叉树的创建及先序遍历(给定一些二叉树中的值,大于根的排在右边,小于根的排在左边)
- x64 gs寄存器的一点资料
- CSS小笔记
- Linux common clock framework(3)_实现逻辑分析