Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>There are two ways to achieve this:</p> <ul> <li>Hook the relevant functions in the kernel - the traditional way - which requires a C/Kernel Driver. This is possible on x86 Windows, but on x64 <a href="http://msdn.microsoft.com/en-us/library/windows/hardware/gg487353.aspx" rel="nofollow">Kernel Patch Protection</a> will detect these modifications and shut down the system (with a bluescreen).</li> <li><p>Build a <a href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff563911%28v=vs.85%29.aspx" rel="nofollow">registry filter driver</a> - this is the now encouraged way to attack this problem and is the way process monitor works. You can also build file system filter drivers this way. Essentially, you simply need to pass the information back to userland which boils down to:</p> <pre><code>IoRegisterDevice(...somewhere in \Devices\YourDriverName...) IoCreateSymbolicLink(\\DosDevices\Name -&gt; \Devices\YourDriverName) </code></pre> <p>then a C, C++, C# application should be able to open the file <code>\\.\YourDriverName</code> and <code>DeviceIoControl</code> to it and receive responses.</p></li> </ul> <p>It <em>is</em> possible to use C++ to write kernel drivers, but <a href="http://msdn.microsoft.com/en-us/library/windows/hardware/gg487420.aspx" rel="nofollow">see this before you embark on doing so</a>. To be clearer, you need to be really careful about memory in kernel mode (paged, nonpaged) and you're not going to have access to much of the standard library.</p> <p>As an aside, you should be aware that:</p> <ul> <li>Not all registry hives are accessible to kernel mode drivers, depending on context.</li> <li>The paths are not common. So the kernel accesses <code>\Registry\System</code> whereas userland accesses <code>HKLM</code>.</li> </ul>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload