反调试系列一:Anti debug vmware
Verr 指令在VMware下执行可能有异常,据此可以检测运行环境为VMWare
 
一、通过dx判断。
#include <windows.h>
#pragma comment(linker, “/entry:main”)

int main()
{

__asm
{
  mov    dx, 1
_l1:
  verr  dx        //其中的 dx, 可以为其他。只要 dx & 4 == TRUE, 那么就会在 vmware 中发生异常,而外部没有发现这种现象
  shl    dx, 1
  jmp    _l1
}

return 0;
}
以上的这个函数自在vm5.5及之前的版本有效!

bool VMWareTest()
{
BYTE PortValue1,PortValue2;
__try
{
  __asm
  {
    pushad
    pushfd
    xor ebx,ebx
    mov ecx,0xa
    mov eax, ‘VMXh’      ; EAX=magic
    mov dx, ‘VX’      ; DX=magic
    in  eax, dx        ; specially processed io cmd
    cmp ebx, ‘VMXh’      ; also eax/ecx modified (maybe vmw/os ver?)
    jne local_001
    mov gInVMWARE,1
local_001:
    popfd
    popad
  }
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
  gInVMWARE=false;
}
return gInVMWARE;
}

bool VirtualPCTest()
{
__try
{
  __asm
  {
    pushad     
    mov  ebx, 0 // Flag
    mov  eax, 1 // VPC function number
    __emit 0Fh
    __emit 3Fh
    __emit 07h
    __emit 0Bh
    test ebx, ebx
    jnz local_001
    mov gInVirtualPC,1
local_001:
    popad
  }

}
__except(EXCEPTION_EXECUTE_HANDLER)
{
  gInVirtualPC=false;
}
if(gInVirtualPC)
  DbgPrint(“Syser : Host machine is VirtualPC !\n”);
return gInVirtualPC;
}

(文章今日已有 1 人访问,总访问量 18 ::>_<::)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇