Projects
This page is a listing of various projects that I own and have decided to make available.
- VMKD, an accelerator for Windows kernel debugging under VMware Server 1.03 and 1.04.
An implementation of the low-level KD transport protocol is included. In addition to the patcher for kdcom.dll that I had released, there is also a drop-in replacement for kdcom.dll included in this distribution. The reason that I didn’t rely on this instead of the kdcom.dll patcher (which is certainly a much less elegant solution) is that, for Windows Vista and beyond, winload.exe enforces a restriction that KD transport modules must be signed by a Microsoft issued certificate. However, you can still use the custom transport module on downlevel platforms by using /DEBUGPORT=VMWARE.
- SDbgExt, a collection of debugger extensions for 32-bit WinDbg.
Be warned that there’s a lot of sloppy, quick’n’dirty hack-ish code present here. Some work is needed for 64-bit WinDbg support, in particular.
- KD, an extremely bare-bones KD client and protocol client library for Windows 2000 and earlier, based upon an ancient DDK sample.
Note that this project doesn’t support the DbgKd64 protocol used by Windows XP and beyond, though adding support for that would likely not be too much work.
- MSNMessengerLib, an asynchronous C++ library for managing connections to MSN Messenger (now Windows Live Messenger).
Protocols MSNP2 through MSNP9 are supported, though MSNP8 and MSNP9 are the only still-active protocols supported by the library. Most of this code is in the various MSN-related projects I’ve written, such as MSNClient, MSNMessengerISAPI, and MessengerNotifySvc.
Be warned that this code is quite old and doesn’t really follow the best of coding standards.
- ntnative, a collection of definitions for various NT system service interfaces and their associated types.
The included definitions are mostly complete through Windows Server 2003, sans some of the new NtQuerySystemInformation information classes, and some of the estoric EFI-related system services. Also included are definitions for some other NTDLL APIs that, while not technically system services, are often considered part of the NT API (e.g. DbgUi, CsrClient).
The typical usage scenario for this project would be to link to use the provided headers to ntdll.lib (which ships with the WDK) for user mode programs.
- KdEnable, an unfinished program whose goal was to provide an interface for patching the global kernel variables responsible for controlling the KD enablement state.
The original design goal was to allow on-the-fly enabling of KD, even if you hadn’t booted with /DEBUG. The original proof of concept for this worked, though I had hardcoded offsets rather eggregriously, making it a rather less than particularly portable solution. The second iteration of KdEnable was then began, which turned into a general kernel mode patching driver (as the various mechanisms for administrator access to write kernel mode memory have started to have been closed in recent OS releases). This project was never fully finished (nor debugged), so be forewarned.
Note about licensing:
For the moment, the bulk of them are licensed under the WehnTrust Software License 1.0. It is probable that I’ll cross-license things under some additional, more-open (perhaps BSD-like) license terms after I’ve had a chance to think on the matter for some time. (Software licenses suck in general.)