mirror of
https://github.com/HyperDbg/HyperDbg.git
synced 2026-08-31 01:56:24 +00:00
check to unload the trace module before unloading vmm
This commit is contained in:
parent
0aedc66ed0
commit
aa09f9cde3
10 changed files with 163 additions and 56 deletions
|
|
@ -356,11 +356,6 @@ DebuggerUninitialize()
|
|||
|
||||
ProcessorsCount = KeQueryActiveProcessorCount(0);
|
||||
|
||||
//
|
||||
// Uninitialize the HyperTrace (if it was initialized)
|
||||
//
|
||||
HyperTraceUninit();
|
||||
|
||||
//
|
||||
// Free the Pool manager
|
||||
//
|
||||
|
|
|
|||
|
|
@ -334,30 +334,6 @@ LoaderInitDebuggerAndVmm(PDEBUGGER_INIT_VMM_PACKET InitVmmPacket)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Uninitialize the VMM
|
||||
*
|
||||
* @return VOID
|
||||
*/
|
||||
VOID
|
||||
LoaderUninitVmm()
|
||||
{
|
||||
//
|
||||
// Mark VMM as uninitialized before uninitializing it to avoid any potential reentrancy issues during the uninitialization process
|
||||
//
|
||||
g_VmmInitialized = FALSE;
|
||||
|
||||
//
|
||||
// First remove all VMM related state from the debugger
|
||||
//
|
||||
DebuggerUninitializeVmmOperations();
|
||||
|
||||
//
|
||||
// Terminate VMM and its sub-mechanisms
|
||||
//
|
||||
VmFuncUninitVmm();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Uninitialize the hyper trace module
|
||||
*
|
||||
|
|
@ -377,6 +353,44 @@ LoaderUninitHyperTrace()
|
|||
HyperTraceUninit();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Uninitialize the VMM
|
||||
*
|
||||
* @return VOID
|
||||
*/
|
||||
VOID
|
||||
LoaderUninitVmm()
|
||||
{
|
||||
//
|
||||
// Mark VMM as uninitialized before uninitializing it to avoid any potential reentrancy issues during the uninitialization process
|
||||
//
|
||||
g_VmmInitialized = FALSE;
|
||||
|
||||
//
|
||||
// Uninitialize the HyperTrace (if it was initialized)
|
||||
//
|
||||
// If the trace module is currently loaded, it must be unloaded before the VMM module can be unloaded
|
||||
// HyperTrace can operate both with and without the VMM module. When loaded after the VMM module, HyperTrace can make
|
||||
// use of hypervisor-specific features. Otherwise, it will operate normally, but those features will not be available
|
||||
// The trace module will be unloaded automatically and may be reloaded later if needed
|
||||
//
|
||||
// Note: The user mode should automatically request to unload the 'trace' module if it is already loaded
|
||||
// however, here we also unload it just in case if this function is directly called or the user mode
|
||||
// code did not unload it
|
||||
//
|
||||
LoaderUninitHyperTrace();
|
||||
|
||||
//
|
||||
// First remove all VMM related state from the debugger
|
||||
//
|
||||
DebuggerUninitializeVmmOperations();
|
||||
|
||||
//
|
||||
// Terminate VMM and its sub-mechanisms
|
||||
//
|
||||
VmFuncUninitVmm();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Uninitialize the debugger
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue