bc (clear and remove breakpoints)
Description of the 'bc' command in HyperDbg.
Command
bc
Syntax
bc [BreakpointId (hex)]
Description
Clears and removes a breakpoint (0xcc).
Parameters
[BreakpointId (hex)]
The breakpoint id of the target breakpoint. You can see a list of breakpoints and breakpoint ids using the 'bl' command.
Examples
Imagine we have the following active breakpoints.
After executing the following command, it's now removed.
If you see the list of active breakpoints again, you can see that it's removed.
IOCTL
This commands works over serial by sending the serial packets to the remote computer.
First of all, you should fill the following structure, set the BreakpointId
to your special breakpoint id, which is derived from the 'bl' command.
In the request field, choose one of the actions from the following enum.
In the case of Request
:
If you want to list all the active breakpoint, then choose
DEBUGGEE_BREAKPOINT_MODIFICATION_REQUEST_LIST_BREAKPOINTS
.If you want to enable a breakpoint, then choose
DEBUGGEE_BREAKPOINT_MODIFICATION_REQUEST_ENABLE
.If you want to disable a breakpoint, then choose
DEBUGGEE_BREAKPOINT_MODIFICATION_REQUEST_DISABLE
.If you want to list clear and remove a breakpoint, then choose
DEBUGGEE_BREAKPOINT_MODIFICATION_REQUEST_CLEAR
.
Note that if you want to list breakpoints, there is no need to fill BreakpointId
and HyperDbg will ignore it.
The next step is sending the above structure to the debuggee when debuggee is paused and waiting for new command on vmx-root mode.
You should send the above structure with DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_LIST_OR_MODIFY_BREAKPOINTS
as RequestedAction
and DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGER_TO_DEBUGGEE_EXECUTE_ON_VMX_ROOT
as PacketType
.
In return, the debuggee sends the above structure with the following type.
In the returned structure, the Result
is filled by the kernel.
If the Result
is DEBUGEER_OPERATION_WAS_SUCCESSFULL
, then the operation was successful. Otherwise, the returned result is an error.
The following function is responsible for sending list/modify breakpoint buffers in the debugger.
Remarks
This command is guaranteed to keep debuggee in a halt state (in Debugger Mode); thus, nothing will change during its execution.
Requirements
None
Related
Last updated