/GuardMon

Hypervisor based tool for monitoring system register accesses.

Primary LanguageC++MIT LicenseMIT

GuardMon

Introduction

GuardMon is a hypervisor based tool for monitoring system register accesses. GuardMon is capable of logging read and write activities on CR0, CR4, debug registers, GDT, IDT and MSRs from kernel memory not backed by any images.

This tool is particularly useful for analyzing the Windows built-in kernel patch protection, a.k.a. PatchGuard as it runs on non-image regions most of time. A demo movie can be found in Youtube:

GuardMon is implemented on the top of HyperPlatform and primarily designed for a demo purpose. See a project page for more details of HyperPlatform:

Installation and Uninstallation

Clone full source code from Github with a below command and compile it on Visual Studio.

$ git clone --recursive https://github.com/tandasat/GuardMon.git

On the x64 platform, you have to enable test signing to install the driver. To do that, open the command prompt with the administrator privilege and type the following command, and then restart the system to activate the change:

>bcdedit /set testsigning on

To install and uninstall the driver, use the 'sc' command. For installation:

>sc create GuardMon type= kernel binPath= C:\Users\user\Desktop\GuardMon.sys
>sc start GuardMon

For uninstallation:

>sc stop GuardMon
>sc delete GuardMon
>bcdedit /deletevalue testsigning

Note that the system must support the Intel VT-x and EPT technology to successfully install the driver.

To install the driver on a virtual machine on VMware Workstation, see an "Using VMware Workstation" section in the HyperPlatform User Document.

Output

All logs are printed out to DbgView and saved in C:\Windows\GuardMon.log.

Supported Platforms

  • x64 Windows 7, 8.1 and 10
  • The system must support the Intel VT-x and EPT technology

License

This software is released under the MIT License, see LICENSE.