Hello,
I’m running a project that involves virtualization with Windows XP as a guest OS. For the project I need to be able to get some low-level information from the kernel. (E.g. address ranges for DMA mappings) The problem is that I need no get that info even at early stages during the boot - i.e. before any device driver is initialized.
Normally one would write some driver to intercept such information. But I doubt it would be possible to load and initialize this driver before any of the device drivers.
So the only other option I see is to somehow alter kernel behavior, i.e. create kind of wrapper around some of the exported functions. I don’t want to mess with the kernel itself, so the best option would be to create my own kernel version that would proxy all the calls to the real (original) kernel. Is it feasible? How do I do it?
I already tried to create such a proxying module, but came to a roadblock. ntldr seems to load only four files by itself: kernel (ntoskrnl.exe), bootvid.dll, hal.dll and kdcom.dll. And it doesn’t mind any of the import declarations of kernel. Can anybody, please, confirm that?
So, how can I create such proxying module? Or does my problem have simpler solution?
(Let me note that currently I’m interested only in Windows XP OS on x86 architecture. Also it may seem that the whole purpose of virtualization is to abstract the guest OS and host OS, but believe me I really need the described feature.)
Thanks ahead!