<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic CPUID-HyperCall detection of hardware virtual machine monitors by Microsoft in Intel vPro® Platform</title>
    <link>https://community.intel.com/t5/Intel-vPro-Platform/CPUID-HyperCall-detection-of-hardware-virtual-machine-monitors/m-p/315992#M3694</link>
    <description>&lt;P&gt;Hi all! &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt; &lt;P&gt;&amp;nbsp;&lt;/P&gt; Microsoft has published a CPUID-HyperCall interface of interaction with VMMs, which are based on hardware virtualization.&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Determining If Hypervisor Is Installed. Hypervisor-present bit&lt;/B&gt; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;Before it uses any hypervisor interface functions, software should first determine whether it runs within a virtualized environment. On x64 platforms, software verifies that it runs within a virtualized environment by executing the CPUID instruction with an input (EAX register) value of 1. When the CPUID instruction is executed, code should check bit 31 of register ECX. Bit 31 is the hypervisor-present bit. If the &lt;I&gt;hypervisor-present bit&lt;/I&gt; is set, the hypervisor is present. In a non-virtualized environment, the hypervisor-present bit is clear.&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have several concerns.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;I wonder if vendors will support this mechanism.&lt;/LI&gt;&lt;LI&gt;Will malware writers follow this rule?&lt;/LI&gt;&lt;LI&gt;Will it work for nested virtualization (eg. some legal VMMs and one malware VMM)?&lt;/LI&gt;&lt;LI&gt;Is it possible to prevent cheating VMM IDs?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff538624"&gt;http://msdn.microsoft.com/en-us/library/windows/hardware/ff538624&lt;/A&gt;(v=VS.85).aspx Determining If Hypervisor Is Installed&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Igor Korkin&lt;/P&gt;&lt;P&gt;&lt;A href="http://sites.google.com/site/igorkorkin"&gt;sites.google.com/site/igorkorkin&lt;/A&gt;&lt;/P&gt;</description>
    <pubDate>Sun, 27 Nov 2011 13:16:00 GMT</pubDate>
    <dc:creator>idata</dc:creator>
    <dc:date>2011-11-27T13:16:00Z</dc:date>
    <item>
      <title>CPUID-HyperCall detection of hardware virtual machine monitors by Microsoft</title>
      <link>https://community.intel.com/t5/Intel-vPro-Platform/CPUID-HyperCall-detection-of-hardware-virtual-machine-monitors/m-p/315992#M3694</link>
      <description>&lt;P&gt;Hi all! &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt; &lt;P&gt;&amp;nbsp;&lt;/P&gt; Microsoft has published a CPUID-HyperCall interface of interaction with VMMs, which are based on hardware virtualization.&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Determining If Hypervisor Is Installed. Hypervisor-present bit&lt;/B&gt; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;Before it uses any hypervisor interface functions, software should first determine whether it runs within a virtualized environment. On x64 platforms, software verifies that it runs within a virtualized environment by executing the CPUID instruction with an input (EAX register) value of 1. When the CPUID instruction is executed, code should check bit 31 of register ECX. Bit 31 is the hypervisor-present bit. If the &lt;I&gt;hypervisor-present bit&lt;/I&gt; is set, the hypervisor is present. In a non-virtualized environment, the hypervisor-present bit is clear.&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have several concerns.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;I wonder if vendors will support this mechanism.&lt;/LI&gt;&lt;LI&gt;Will malware writers follow this rule?&lt;/LI&gt;&lt;LI&gt;Will it work for nested virtualization (eg. some legal VMMs and one malware VMM)?&lt;/LI&gt;&lt;LI&gt;Is it possible to prevent cheating VMM IDs?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff538624"&gt;http://msdn.microsoft.com/en-us/library/windows/hardware/ff538624&lt;/A&gt;(v=VS.85).aspx Determining If Hypervisor Is Installed&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Igor Korkin&lt;/P&gt;&lt;P&gt;&lt;A href="http://sites.google.com/site/igorkorkin"&gt;sites.google.com/site/igorkorkin&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 27 Nov 2011 13:16:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-vPro-Platform/CPUID-HyperCall-detection-of-hardware-virtual-machine-monitors/m-p/315992#M3694</guid>
      <dc:creator>idata</dc:creator>
      <dc:date>2011-11-27T13:16:00Z</dc:date>
    </item>
  </channel>
</rss>

