|
HyperDbg Debugger
|
Implementation of Debugger Commands. More...
#include "pch.h"Functions | |
| BOOLEAN | DebuggerCommandReadRegisters (GUEST_REGS *Regs, PDEBUGGEE_REGISTER_READ_DESCRIPTION ReadRegisterRequest) |
| read registers | |
| BOOLEAN | DebuggerCommandReadMemory (PDEBUGGER_READ_MEMORY ReadMemRequest, PVOID UserBuffer, PSIZE_T ReturnSize) |
| Read memory for different commands. | |
| BOOLEAN | DebuggerCommandReadMemoryVmxRoot (PDEBUGGER_READ_MEMORY ReadMemRequest, UCHAR *UserBuffer, UINT32 *ReturnSize) |
| Read memory for different commands from vmxroot mode. | |
| NTSTATUS | DebuggerReadOrWriteMsr (PDEBUGGER_READ_AND_WRITE_ON_MSR ReadOrWriteMsrRequest, UINT64 *UserBuffer, PSIZE_T ReturnSize) |
| Perform rdmsr, wrmsr commands. | |
| NTSTATUS | DebuggerCommandEditMemory (PDEBUGGER_EDIT_MEMORY EditMemRequest) |
| Edit physical and virtual memory. | |
| BOOLEAN | DebuggerCommandEditMemoryVmxRoot (PDEBUGGER_EDIT_MEMORY EditMemRequest) |
| Edit physical and virtual memory on vmxroot mode. | |
| BOOLEAN | PerformSearchAddress (UINT64 *AddressToSaveResults, PDEBUGGER_SEARCH_MEMORY SearchMemRequest, UINT64 StartAddress, UINT64 EndAddress, BOOLEAN IsDebuggeePaused, PUINT32 CountOfMatchedCases) |
| Search on virtual memory (not work on physical memory). | |
| BOOLEAN | SearchAddressWrapper (PUINT64 AddressToSaveResults, PDEBUGGER_SEARCH_MEMORY SearchMemRequest, UINT64 StartAddress, UINT64 EndAddress, BOOLEAN IsDebuggeePaused, PUINT32 CountOfMatchedCases) |
| The wrapper to check for validity of addresses and call the search routines for both physical and virtual memory. | |
| NTSTATUS | DebuggerCommandSearchMemory (PDEBUGGER_SEARCH_MEMORY SearchMemRequest) |
| Start searching memory. | |
| NTSTATUS | DebuggerCommandFlush (PDEBUGGER_FLUSH_LOGGING_BUFFERS DebuggerFlushBuffersRequest) |
| Perform the flush requests to vmx-root and vmx non-root buffers. | |
| NTSTATUS | DebuggerCommandSignalExecutionState (PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL DebuggerFinishedExecutionRequest) |
| Perform the command finished signal. | |
| NTSTATUS | DebuggerCommandSendMessage (PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER DebuggerSendUsermodeMessageRequest) |
| Send the user-mode buffer to debugger. | |
| NTSTATUS | DebuggerCommandSendGeneralBufferToDebugger (PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER DebuggeeBufferRequest) |
| Send general buffers from the debuggee to the debugger. | |
| NTSTATUS | DebuggerCommandReservePreallocatedPools (PDEBUGGER_PREALLOC_COMMAND PreallocRequest) |
| Reserve and allocate pre-allocated buffers. | |
| NTSTATUS | DebuggerCommandPreactivateFunctionality (PDEBUGGER_PREACTIVATE_COMMAND PreactivateRequest) |
| Preactivate a special functionality. | |
| BOOLEAN | DebuggerCommandBringPagein (PDEBUGGER_PAGE_IN_REQUEST PageinRequest) |
| routines for the .pagein command | |
Implementation of Debugger Commands.
| BOOLEAN DebuggerCommandBringPagein | ( | PDEBUGGER_PAGE_IN_REQUEST | PageinRequest | ) |
routines for the .pagein command
| PageinRequest |
| NTSTATUS DebuggerCommandEditMemory | ( | PDEBUGGER_EDIT_MEMORY | EditMemRequest | ) |
Edit physical and virtual memory.
| EditMemRequest | edit memory request |
| BOOLEAN DebuggerCommandEditMemoryVmxRoot | ( | PDEBUGGER_EDIT_MEMORY | EditMemRequest | ) |
Edit physical and virtual memory on vmxroot mode.
| EditMemRequest | edit memory request |
| NTSTATUS DebuggerCommandFlush | ( | PDEBUGGER_FLUSH_LOGGING_BUFFERS | DebuggerFlushBuffersRequest | ) |
Perform the flush requests to vmx-root and vmx non-root buffers.
| DebuggerFlushBuffersRequest | Request to flush the buffers |
| NTSTATUS DebuggerCommandPreactivateFunctionality | ( | PDEBUGGER_PREACTIVATE_COMMAND | PreactivateRequest | ) |
Preactivate a special functionality.
| PreactivateRequest | Request details of preactivation |
| BOOLEAN DebuggerCommandReadMemory | ( | PDEBUGGER_READ_MEMORY | ReadMemRequest, |
| PVOID | UserBuffer, | ||
| PSIZE_T | ReturnSize ) |
Read memory for different commands.
| ReadMemRequest | request structure for reading memory |
| UserBuffer | user buffer to copy the memory |
| ReturnSize | size that should be returned to user mode buffers |
| BOOLEAN DebuggerCommandReadMemoryVmxRoot | ( | PDEBUGGER_READ_MEMORY | ReadMemRequest, |
| UCHAR * | UserBuffer, | ||
| UINT32 * | ReturnSize ) |
Read memory for different commands from vmxroot mode.
| ReadMemRequest | request structure for reading memory |
| UserBuffer | user buffer to copy the memory |
| ReturnSize | size that should be returned to user mode buffers |
| BOOLEAN DebuggerCommandReadRegisters | ( | GUEST_REGS * | Regs, |
| PDEBUGGEE_REGISTER_READ_DESCRIPTION | ReadRegisterRequest ) |
read registers
| Regs | |
| ReadRegisterRequest |
| NTSTATUS DebuggerCommandReservePreallocatedPools | ( | PDEBUGGER_PREALLOC_COMMAND | PreallocRequest | ) |
Reserve and allocate pre-allocated buffers.
| PreallocRequest | Request details of needed buffers to be reserved |
| NTSTATUS DebuggerCommandSearchMemory | ( | PDEBUGGER_SEARCH_MEMORY | SearchMemRequest | ) |
Start searching memory.
| SearchMemRequest | Request to search memory |
| NTSTATUS DebuggerCommandSendGeneralBufferToDebugger | ( | PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER | DebuggeeBufferRequest | ) |
Send general buffers from the debuggee to the debugger.
| DebuggeeBufferRequest | Request to buffer that will be sent to the debugger |
| NTSTATUS DebuggerCommandSendMessage | ( | PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER | DebuggerSendUsermodeMessageRequest | ) |
Send the user-mode buffer to debugger.
| DebuggerSendUsermodeMessageRequest | Request to send message to debugger |
| NTSTATUS DebuggerCommandSignalExecutionState | ( | PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL | DebuggerFinishedExecutionRequest | ) |
Perform the command finished signal.
| DebuggerFinishedExecutionRequest | Request to signal debuggee about execution state |
| NTSTATUS DebuggerReadOrWriteMsr | ( | PDEBUGGER_READ_AND_WRITE_ON_MSR | ReadOrWriteMsrRequest, |
| UINT64 * | UserBuffer, | ||
| PSIZE_T | ReturnSize ) |
Perform rdmsr, wrmsr commands.
| ReadOrWriteMsrRequest | Msr read/write request |
| UserBuffer | user buffer to save the results |
| ReturnSize | return size to user-mode buffers |
| BOOLEAN PerformSearchAddress | ( | UINT64 * | AddressToSaveResults, |
| PDEBUGGER_SEARCH_MEMORY | SearchMemRequest, | ||
| UINT64 | StartAddress, | ||
| UINT64 | EndAddress, | ||
| BOOLEAN | IsDebuggeePaused, | ||
| PUINT32 | CountOfMatchedCases ) |
Search on virtual memory (not work on physical memory).
This function can be called from vmx-root mode Do NOT directly call this function as the virtual addresses should be valid on the target process memory layout instead call : SearchAddressWrapper the address between StartAddress and EndAddress should be contiguous
| AddressToSaveResults | Address to save the search results |
| SearchMemRequest | request structure of searching memory |
| StartAddress | valid start address based on target process |
| EndAddress | valid end address based on target process |
| IsDebuggeePaused | Set to true when the search is performed in the debugger mode |
| CountOfMatchedCases | Number of matched cases |
| BOOLEAN SearchAddressWrapper | ( | PUINT64 | AddressToSaveResults, |
| PDEBUGGER_SEARCH_MEMORY | SearchMemRequest, | ||
| UINT64 | StartAddress, | ||
| UINT64 | EndAddress, | ||
| BOOLEAN | IsDebuggeePaused, | ||
| PUINT32 | CountOfMatchedCases ) |
The wrapper to check for validity of addresses and call the search routines for both physical and virtual memory.
This function can be called from vmx-root mode The address between start address and end address will be checked to make a contiguous address
| AddressToSaveResults | Address to save the search results |
| SearchMemRequest | request structure of searching memory |
| StartAddress | start address of searching based on target process |
| EndAddress | start address of searching based on target process |
| IsDebuggeePaused | Set to true when the search is performed in the debugger mode |
| CountOfMatchedCases | Number of matched cases |