-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HyperDBG integration #139
Comments
Thanks for considering integration! |
Sure ! From what I understand, you virtualize a Windows system on-the-fly, blue pill style. I think this is close to what bareflank is doing right ? I'm curious how you forward events though, because the libvmi bareflank driver has this restriction that i cannot listen on hardware, otherwise it would simply freeze the system 🙃 |
Yeah, it's a blue-pill style hypervisor.
Yes, it is.
We have a mechanism to trigger events. whenever an event happens after a vm-exit occurs, HyperDbg executes a function called "DebuggerTriggerEvents". You can see its definition. After that, this function executes all the related events for the debugger such as creating logs, running scripts, break to the debugger, etc. I think we can provide you the details you need by adding codes on "DebuggerTriggerEvents". Do you think it works? |
What do you mean by "adding codes ?" To summarize, the goal of libmicrovmi, here, would be to reuse the higher-level parts of HhyperDBG, as the debugger UI, CLI, etc, on top of other hypervisors, think Xen, KVM Do you think that's doable in terms of architecture, or HyperDBG will always be tied to its blue-pill style hypervisor ? |
I'm updating this issue based on the discussions we had on Twitter. First, HyperDBG has 2 modes:
The Debugger mode is bit tricky in terms of connection, as Windows sockets cannot be used since they are not IRQL compatible. So if we want libmicrovmi to work with both modes, it should provide a serial socket (this is the part where I'm a bit lost) Regarding the VMI mode, the TCP connection is already implemented, using Following this idea: It's a possible solution to pilot HyperDBG from libmicrovmi, however this would be slow to deliver events, mostly difficult to implement, converting all commands into strings. Instead, this is how i was envisioning an integration: Here libmicrovmi only has to translate from an API to another one. |
Thank you for the illustration.
|
I suppose I shouldn't have used the term "driver". It's not a driver in the Windows sense, living in kernel, but rather an adapter, in userland with the rest of libmicrovmi, to translate calls from the generic libmicrovmi interface to HyperDBG Windows driver.
The point here is to be able to use HyperDBG debugger on other hypervisors.
in the second picture, libmicrovmi doesn't have to handle any commands. A command is a too high-level construct. The hyperdbgctrl TCP / Named pipe server is listening, receiving string commands, parsing them, and translating the calls into |
Thanks for your answers. Let's give an example, Is it correct? |
Hi Sina,
yes, this is correct 👍
In the end, the goal is to mutualise the frameworks and tools you are building as part of HyperDBG to make them available for other hypervisors, and grow the ecosystem |
Hello, thank you for your reply. Happy new year to you too. |
That's a good idea, there is no rush, and we still working on other integrations here, like a Volatility3 address space for example |
HyperDbg
debugger is an open-source, hypervisor-assisted user-mode, and kernel-mode Windows debugger with a focus on using modern hardware technologies. It is a debugger designed for analyzing, fuzzing and reversing.How does it listen for VM events such as EPT pagefaults ?
What hypervisors are supported ?
Could HyperDBG make use of libmicrovmi ?
cc @SinaKarvandi here :)
The text was updated successfully, but these errors were encountered: