This function applies commands from the debugger to the debuggee. 
 2293{
 2324 
 2326    {
 2329        UINT32                  RecvBufferLength  = 0;
 
 2331 
 2332        
 2333        
 2334        
 2336 
 2337        
 2338        
 2339        
 2341        {
 2342            
 2343            
 2344            
 2345            continue;
 2346        }
 2347 
 2349        {
 2350            
 2351            
 2352            
 2354                                      RecvBufferLength - 
sizeof(
BYTE)) != TheActualPacket->
Checksum)
 
 2355            {
 2356                LogError(
"Err, checksum is invalid");
 
 2357                continue;
 2358            }
 2359 
 2360            
 2361            
 2362            
 2364            {
 2365                
 2366                
 2367                
 2368                
 2369                LogError(
"Err, unknown packet received from the debugger\n");
 
 2370                continue;
 2371            }
 2372 
 2373            
 2374            
 2375            
 2377            {
 2379 
 2380                
 2381                
 2382                
 2384 
 2385                
 2386                
 2387                
 2388                EscapeFromTheLoop = 
TRUE;
 
 2389 
 2390                break;
 2391 
 2393 
 2395 
 2397                {
 2400 
 2401                    
 2402                    
 2403                    
 2404 
 2405                    
 2406                    
 2407                    
 2409 
 2410                    
 2411                    
 2412                    
 2414 
 2416                    {
 2418                    }
 2419 
 2420                    
 2421                    
 2422                    
 2423                    EscapeFromTheLoop = 
TRUE;
 
 2424 
 2425                    break;
 2426 
 2430 
 2431                    
 2432                    
 2433                    
 2435 
 2436                    
 2437                    
 2438                    
 2440 
 2442                    {
 2444                    }
 2445 
 2446                    
 2447                    
 2448                    
 2449                    EscapeFromTheLoop = 
TRUE;
 
 2450 
 2451                    break;
 2452 
 2454 
 2455                    
 2456                    
 2457                    
 2458 
 2459                    
 2460                    
 2461                    
 2463 
 2464                    
 2465                    
 2466                    
 2468 
 2469                    
 2470                    
 2471                    
 2472                    EscapeFromTheLoop = 
TRUE;
 
 2473 
 2474                    break;
 2475 
 2476                default:
 2477                    break;
 2478                }
 2479 
 2480                break;
 2481 
 2483 
 2484                
 2485                
 2486                
 2488 
 2489                
 2490                
 2491                
 2493 
 2494                
 2495                
 2496                
 2497                EscapeFromTheLoop = 
TRUE;
 
 2498 
 2499                break;
 2500 
 2502 
 2504 
 2505                
 2506                
 2507                
 2509                {
 2510                    
 2511                    
 2512                    
 2513                    EscapeFromTheLoop = 
TRUE;
 
 2514 
 2515                    
 2516                    
 2517                    
 2518                    UnlockTheNewCore = 
TRUE;
 
 2519                }
 2520 
 2521                
 2522                
 2523                
 2526                                           (
CHAR *)ChangeCorePacket,
 
 2528 
 2529                
 2530                
 2531                
 2532                if (UnlockTheNewCore)
 2533                {
 2534                    UnlockTheNewCore = 
FALSE;
 
 2536                }
 2537 
 2538                break;
 2539 
 2541 
 2543 
 2544                
 2545                
 2546                
 2548 
 2549                
 2550                
 2551                
 2554                                           (
CHAR *)FlushPacket,
 
 2556 
 2557                break;
 2558 
 2560 
 2562 
 2564 
 2565                
 2566                
 2567                
 2569                {
 2571                }
 2572 
 2573                
 2574                
 2575                
 2578                                              CallstackPacket->
Size,
 
 2580                {
 2582                }
 2583                else
 2584                {
 2586                }
 2587 
 2588                
 2589                
 2590                
 2593                                           (
CHAR *)CallstackPacket,
 
 2594                                           (
UINT32)CallstackPacket->BufferSize);
 
 2595 
 2596                break;
 2597 
 2599 
 2601 
 2602                
 2603                
 2604                
 2606 
 2607                
 2608                
 2609                
 2612                                           (
CHAR *)TestQueryPacket,
 
 2614 
 2615                break;
 2616 
 2618 
 2620 
 2621                
 2622                
 2623                
 2625                {
 2627                }
 2628                else
 2629                {
 2631                }
 2632 
 2634                {
 2636                }
 2637                else
 2638                {
 2640                }
 2641                
 2642                
 2643                
 2646                                           (
CHAR *)ReadRegisterPacket,
 
 2647                                           SizeToSend);
 2648 
 2649                break;
 2650 
 2652 
 2654 
 2655                
 2656                
 2657                
 2659                {
 2661                }
 2662                else
 2663                {
 2665                }
 2666 
 2667                
 2668                
 2669                
 2672                                           (
CHAR *)WriteRegisterPacket,
 
 2674 
 2675                break;
 2676 
 2678 
 2680 
 2681                
 2682                
 2683                
 2686                                                     &ReturnSize))
 2687                {
 2689                }
 2690                else
 2691                {
 2693                }
 2694 
 2696 
 2697                
 2698                
 2699                
 2702                                           (
CHAR *)ReadMemoryPacket,
 
 2704 
 2705                break;
 2706 
 2708 
 2710 
 2711                
 2712                
 2713                
 2715 
 2716                
 2717                
 2718                
 2721                                           (
CHAR *)EditMemoryPacket,
 
 2723 
 2724                break;
 2725 
 2727 
 2729 
 2730                
 2731                
 2732                
 2734 
 2735                
 2736                
 2737                
 2740                                           (
CHAR *)ChangeProcessPacket,
 
 2742 
 2743                break;
 2744 
 2746 
 2748 
 2749                
 2750                
 2751                
 2753 
 2754                
 2755                
 2756                
 2759                                           (
CHAR *)ChangeThreadPacket,
 
 2761 
 2762                break;
 2763 
 2765 
 2767 
 2768                
 2769                
 2770                
 2772                                             NULL,
 2773                                             ScriptPacket,
 2775                {
 2776                    
 2777                    
 2778                    
 2780                }
 2781                else
 2782                {
 2783                    
 2784                    
 2785                    
 2787                }
 2788 
 2789                
 2790                
 2791                
 2794                                           (
CHAR *)ScriptPacket,
 
 2796 
 2797                break;
 2798 
 2800 
 2802 
 2803                
 2804                
 2805                
 2808 
 2809                
 2810                
 2811                
 2813                EscapeFromTheLoop = 
TRUE;
 
 2814 
 2815                break;
 2816 
 2818 
 2820 
 2821                
 2822                
 2823                
 2824                
 2825 
 2827                                         SearchQueryPacket,
 2832                {
 2833                    
 2834                    
 2835                    
 2837                }
 2838                else
 2839                {
 2840                    
 2841                    
 2842                    
 2844                }
 2845 
 2846                
 2847                
 2848                
 2851                                           (
CHAR *)&SearchPacketResult,
 
 2853 
 2854                break;
 2855 
 2857 
 2859 
 2860                
 2861                
 2862                
 2864                {
 2865                    
 2866                    
 2867                    
 2869                    EscapeFromTheLoop = 
TRUE;
 
 2870                }
 2871                else
 2872                {
 2873                    
 2874                    
 2875                    
 2878                                               (
CHAR *)&DebuggerEventAndActionResult,
 
 2880                }
 2881 
 2882                break;
 2883 
 2885 
 2887 
 2888                
 2889                
 2890                
 2892                {
 2893                    
 2894                    
 2895                    
 2897                    EscapeFromTheLoop = 
TRUE;
 
 2898                }
 2899                else
 2900                {
 2901                    
 2902                    
 2903                    
 2906                                               (
CHAR *)&DebuggerEventAndActionResult,
 
 2908                }
 2909 
 2910                break;
 2911 
 2913 
 2915 
 2916                
 2917                
 2918                
 2920                {
 2921                    
 2922                    
 2923                    
 2925                    EscapeFromTheLoop = 
TRUE;
 
 2926                }
 2927                else
 2928                {
 2929                    
 2930                    
 2931                    
 2934                                               (
CHAR *)QueryAndModifyEventPacket,
 
 2936                }
 2937 
 2938                break;
 2939 
 2941 
 2943 
 2944                
 2945                
 2946                
 2948 
 2949                
 2950                
 2951                
 2954                                           (
CHAR *)ShortCircuitingEventPacket,
 
 2956 
 2957                break;
 2958 
 2960 
 2962 
 2963                
 2964                
 2965                
 2967 
 2968                
 2969                
 2970                
 2975 
 2976                break;
 2977 
 2979 
 2981 
 2982                
 2983                
 2984                
 2986 
 2987                
 2988                
 2989                
 2994 
 2995                break;
 2996 
 2998 
 3000 
 3001                
 3002                
 3003                
 3005 
 3006                
 3007                
 3008                
 3011                                           (
CHAR *)PageinPacket,
 
 3013 
 3014                break;
 3015 
 3017 
 3019 
 3020                
 3021                
 3022                
 3023                
 3025 
 3026                
 3027                
 3028                
 3031                                           (
CHAR *)Va2paPa2vaPacket,
 
 3033 
 3034                break;
 3035 
 3037 
 3039 
 3040                
 3041                
 3042                
 3044 
 3045                
 3046                
 3047                
 3050                                           (
CHAR *)BpListOrModifyPacket,
 
 3052 
 3053                break;
 3054 
 3056 
 3058 
 3059                
 3060                
 3061                
 3063 
 3064                
 3065                
 3066                
 3068 
 3069                
 3070                
 3071                
 3072                EscapeFromTheLoop = 
TRUE;
 
 3073 
 3074                break;
 3075 
 3076            default:
 3077                LogError(
"Err, unknown packet action received from the debugger\n");
 
 3078                break;
 3079            }
 3080        }
 3081        else
 3082        {
 3083            
 3084            
 3085            
 3086            LogError(
"Err, it's not a HyperDbg packet, the packet is probably deformed\n");
 
 3087            continue;
 3088        }
 3089 
 3090        
 3091        
 3092        
 3093        if (EscapeFromTheLoop)
 3094        {
 3095            break;
 3096        }
 3097    }
 3098}
unsigned int UINT32
Definition BasicTypes.h:48
struct GUEST_EXTRA_REGISTERS GUEST_EXTRA_REGISTERS
struct for extra registers
BOOLEAN BreakpointAddNew(PDEBUGGEE_BP_PACKET BpDescriptorArg)
Add new breakpoints.
Definition BreakpointCommands.c:893
BOOLEAN BreakpointListOrModify(PDEBUGGEE_BP_LIST_OR_MODIFY_PACKET ListOrModifyBreakpoints)
List of modify breakpoints.
Definition BreakpointCommands.c:1089
BOOLEAN CallstackWalkthroughStack(PDEBUGGER_SINGLE_CALLSTACK_FRAME AddressToSaveFrames, UINT64 StackBaseAddress, UINT32 Size, BOOLEAN Is32Bit)
Walkthrough the stack.
Definition Callstack.c:25
struct _DEBUGGER_REMOTE_PACKET * PDEBUGGER_REMOTE_PACKET
@ DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGEE_TO_DEBUGGER
Definition Connection.h:164
@ DEBUGGER_REMOTE_PACKET_TYPE_DEBUGGER_TO_DEBUGGEE_EXECUTE_ON_VMX_ROOT
Definition Connection.h:154
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_BP
Definition Connection.h:122
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_REGISTER_EVENT
Definition Connection.h:85
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_PTE
Definition Connection.h:128
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_TEST_QUERY
Definition Connection.h:114
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_SEARCH_QUERY
Definition Connection.h:84
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RELOAD_SEARCH_QUERY
Definition Connection.h:127
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_SHORT_CIRCUITING_STATE
Definition Connection.h:123
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_NO_ACTION
Definition Connection.h:103
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_LIST_OR_MODIFY_BREAKPOINTS
Definition Connection.h:92
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_INJECT_PAGE_FAULT
Definition Connection.h:97
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_FLUSH
Definition Connection.h:112
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_EDIT_MEMORY
Definition Connection.h:90
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_CONTINUE
Definition Connection.h:74
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_ADD_ACTION_TO_EVENT
Definition Connection.h:86
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_ADDING_ACTION_TO_EVENT
Definition Connection.h:116
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_CHANGE_CORE
Definition Connection.h:76
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_READING_REGISTERS
Definition Connection.h:119
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_CHANGE_THREAD
Definition Connection.h:81
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_CHANGE_PROCESS
Definition Connection.h:80
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_READ_REGISTERS
Definition Connection.h:88
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_READING_MEMORY
Definition Connection.h:120
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_REGISTERING_EVENT
Definition Connection.h:115
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_WRITE_REGISTER
Definition Connection.h:131
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_STEP
Definition Connection.h:73
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_WRITE_REGISTER
Definition Connection.h:98
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_VA2PA_AND_PA2VA
Definition Connection.h:129
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_SET_SHORT_CIRCUITING_STATE
Definition Connection.h:96
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_CLOSE_AND_UNLOAD_DEBUGGEE
Definition Connection.h:75
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_EDITING_MEMORY
Definition Connection.h:121
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_CHANGING_THREAD
Definition Connection.h:109
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_CALLSTACK
Definition Connection.h:78
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_TEST_QUERY
Definition Connection.h:79
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_QUERY_PA2VA_AND_VA2PA
Definition Connection.h:94
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_RUNNING_SCRIPT
Definition Connection.h:110
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_BRINGING_PAGES_IN
Definition Connection.h:130
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_BP
Definition Connection.h:91
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_READ_MEMORY
Definition Connection.h:89
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_QUERY_AND_MODIFY_EVENT
Definition Connection.h:117
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_SYMBOL_QUERY_PTE
Definition Connection.h:95
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_CALLSTACK
Definition Connection.h:113
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_QUERY_AND_MODIFY_EVENT
Definition Connection.h:87
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_MODE_FLUSH_BUFFERS
Definition Connection.h:77
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_CHANGING_CORE
Definition Connection.h:107
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_LIST_OR_MODIFY_BREAKPOINTS
Definition Connection.h:124
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_RUN_SCRIPT
Definition Connection.h:82
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_SYMBOL_RELOAD
Definition Connection.h:93
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_DEBUGGEE_RESULT_OF_CHANGING_PROCESS
Definition Connection.h:108
@ DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION_ON_VMX_ROOT_USER_INPUT_BUFFER
Definition Connection.h:83
struct _DEBUGGER_REMOTE_PACKET DEBUGGER_REMOTE_PACKET
The structure of remote packets in HyperDbg.
#define INDICATOR_OF_HYPERDBG_PACKET
constant indicator of a HyperDbg packet
Definition Constants.h:502
#define DEBUGGEE_SHOW_ALL_REGISTERS
for reading all registers in r command.
Definition Constants.h:665
#define MaxSerialPacketSize
size of buffer for serial
Definition Constants.h:194
BOOLEAN DebuggerPerformRunScript(PROCESSOR_DEBUGGING_STATE *DbgState, DEBUGGER_EVENT_ACTION *Action, DEBUGGEE_SCRIPT_PACKET *ScriptDetails, DEBUGGER_TRIGGERED_EVENT_DETAILS *EventTriggerDetail)
Managing run script action.
Definition Debugger.c:1608
BOOLEAN DebuggerCommandEditMemoryVmxRoot(PDEBUGGER_EDIT_MEMORY EditMemRequest)
Edit physical and virtual memory on vmxroot mode.
Definition DebuggerCommands.c:555
BOOLEAN DebuggerCommandReadMemoryVmxRoot(PDEBUGGER_READ_MEMORY ReadMemRequest, UCHAR *UserBuffer, UINT32 *ReturnSize)
Read memory for different commands from vmxroot mode.
Definition DebuggerCommands.c:137
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 vir...
Definition DebuggerCommands.c:962
NTSTATUS DebuggerCommandFlush(PDEBUGGER_FLUSH_LOGGING_BUFFERS DebuggerFlushBuffersRequest)
Perform the flush requests to vmx-root and vmx non-root buffers.
Definition DebuggerCommands.c:1235
#define DEBUGGER_ERROR_INVALID_REGISTER_NUMBER
error, invalid register number
Definition ErrorCodes.h:178
#define DEBUGGER_ERROR_UNABLE_TO_GET_CALLSTACK
error, unable to get the callstack
Definition ErrorCodes.h:380
#define DEBUGGER_ERROR_INVALID_ADDRESS
error, invalid address specified for debugger
Definition ErrorCodes.h:63
#define DEBUGGER_ERROR_PREPARING_DEBUGGEE_TO_RUN_SCRIPT
error, unable to run script in remote debuggee
Definition ErrorCodes.h:172
VOID ExtensionCommandVa2paAndPa2va(PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS AddressDetails, BOOLEAN OperateOnVmxRoot)
routines for !va2pa and !pa2va commands
Definition ExtensionCommands.c:23
BOOLEAN ExtensionCommandPte(PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PteDetails, BOOLEAN IsOperatingInVmxRoot)
routines for !pte command
Definition ExtensionCommands.c:170
VOID KdContinueDebuggeeJustCurrentCore(PROCESSOR_DEBUGGING_STATE *DbgState)
continue the debuggee, just the current operating core
Definition Kd.c:616
VOID KdRegularStepInInstruction(PROCESSOR_DEBUGGING_STATE *DbgState)
Regular step-in | step one instruction to the debuggee.
Definition Kd.c:1515
VOID KdPerformTheTestPacketOperation(PROCESSOR_DEBUGGING_STATE *DbgState, DEBUGGER_DEBUGGER_TEST_QUERY_BUFFER *TestQueryPacket)
Perform the test packet's operation.
Definition Kd.c:1887
_Use_decl_annotations_ VOID KdReloadSymbolDetailsInDebuggee(PDEBUGGEE_SYMBOL_REQUEST_PACKET SymPacket)
Notify user-mode to re-send (reload) the symbol packets.
Definition Kd.c:851
VOID KdNotifyDebuggeeForUserInput(DEBUGGEE_USER_INPUT_PACKET *Descriptor, UINT32 Len)
Notify user-mode to about new user-input buffer.
Definition Kd.c:876
BOOLEAN KdBringPagein(PROCESSOR_DEBUGGING_STATE *DbgState, PDEBUGGER_PAGE_IN_REQUEST PageinRequest)
routines to break page-in
Definition Kd.c:1839
VOID KdGuaranteedStepInstruction(PROCESSOR_DEBUGGING_STATE *DbgState)
apply a guaranteed step one instruction to the debuggee
Definition Kd.c:1406
BOOLEAN KdPerformEventQueryAndModification(PDEBUGGER_MODIFY_EVENTS ModifyAndQueryEvent)
Perform modify and query events.
Definition Kd.c:2084
_Use_decl_annotations_ VOID KdContinueDebuggee(PROCESSOR_DEBUGGING_STATE *DbgState, BOOLEAN PauseBreaksUntilSpecialMessageSent, DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION SpeialEventResponse)
continue the debuggee, this function guarantees that all other cores are continued (except current co...
Definition Kd.c:583
_Use_decl_annotations_ BYTE KdComputeDataChecksum(PVOID Buffer, UINT32 Length)
calculate the checksum of received buffer from debugger
Definition Kd.c:270
BOOLEAN KdPerformRegisterEvent(PDEBUGGEE_EVENT_AND_ACTION_HEADER_FOR_REMOTE_PACKET EventDetailHeader, DEBUGGER_EVENT_AND_ACTION_RESULT *DebuggerEventAndActionResult)
Send event registration buffer to user-mode to register the event.
Definition Kd.c:1584
VOID KdCloseConnectionAndUnloadDebuggee()
Notify user-mode to unload the debuggee and close the connections.
Definition Kd.c:827
_Use_decl_annotations_ BOOLEAN KdReadRegisters(PROCESSOR_DEBUGGING_STATE *DbgState, PDEBUGGEE_REGISTER_READ_DESCRIPTION ReadRegisterRequest)
read registers
Definition Kd.c:639
BOOLEAN KdPerformAddActionToEvent(PDEBUGGEE_EVENT_AND_ACTION_HEADER_FOR_REMOTE_PACKET ActionDetailHeader, DEBUGGER_EVENT_AND_ACTION_RESULT *DebuggerEventAndActionResult)
Send action buffer to user-mode to be added to the event.
Definition Kd.c:1636
VOID KdPerformSettingTheStateOfShortCircuiting(PROCESSOR_DEBUGGING_STATE *DbgState, PDEBUGGER_SHORT_CIRCUITING_EVENT ShortCircuitingEvent)
Perform modify the state of short-circuiting.
Definition Kd.c:2057
BOOLEAN KdSwitchCore(PROCESSOR_DEBUGGING_STATE *DbgState, DEBUGGEE_CHANGE_CORE_PACKET *ChangeCorePacket)
change the current operating core to new core
Definition Kd.c:736
VOID KdRegularStepOver(PROCESSOR_DEBUGGING_STATE *DbgState, BOOLEAN IsNextInstructionACall, UINT32 CallLength)
Regular step-over | step one instruction to the debuggee if there is a call then it jumps the call.
Definition Kd.c:1536
_Use_decl_annotations_ BOOLEAN KdResponsePacketToDebugger(DEBUGGER_REMOTE_PACKET_TYPE PacketType, DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION Response, CHAR *OptionalBuffer, UINT32 OptionalBufferLength)
Sends a HyperDbg response packet to the debugger.
Definition Kd.c:294
BOOLEAN ProcessInterpretProcess(PROCESSOR_DEBUGGING_STATE *DbgState, PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET PidRequest)
change the current process @detail ONLY TO BE USED IN KD STUFFS
Definition Process.c:525
BOOLEAN SetRegValue(PGUEST_REGS GuestRegs, UINT32 RegisterId, UINT64 Value)
Set the register value.
Definition Regs.c:963
struct _DEBUGGER_CALLSTACK_REQUEST DEBUGGER_CALLSTACK_REQUEST
request for callstack frames
@ DEBUGGER_REMOTE_STEPPING_REQUEST_INSTRUMENTATION_STEP_IN
Definition RequestStructures.h:993
@ DEBUGGER_REMOTE_STEPPING_REQUEST_INSTRUMENTATION_STEP_IN_FOR_TRACKING
Definition RequestStructures.h:994
@ DEBUGGER_REMOTE_STEPPING_REQUEST_STEP_IN
Definition RequestStructures.h:992
@ DEBUGGER_REMOTE_STEPPING_REQUEST_STEP_OVER_FOR_GU
Definition RequestStructures.h:997
@ DEBUGGER_REMOTE_STEPPING_REQUEST_STEP_OVER
Definition RequestStructures.h:996
@ DEBUGGER_REMOTE_STEPPING_REQUEST_STEP_OVER_FOR_GU_LAST_INSTRUCTION
Definition RequestStructures.h:998
struct _DEBUGGEE_REGISTER_READ_DESCRIPTION DEBUGGEE_REGISTER_READ_DESCRIPTION
Register Descriptor Structure to use in r command.
struct _DEBUGGER_EDIT_MEMORY * PDEBUGGER_EDIT_MEMORY
BOOLEAN SerialConnectionRecvBuffer(CHAR *BufferToSave, UINT32 *LengthReceived)
Receive packet from the debugger.
Definition SerialConnection.c:99
BOOLEAN ThreadInterpretThread(PROCESSOR_DEBUGGING_STATE *DbgState, PDEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET TidRequest)
change the current thread
Definition Thread.c:325
NULL()
Definition test-case-generator.py:530
The structure of breakpoint modification requests packet in HyperDbg.
Definition RequestStructures.h:1090
The structure of bp command packet in HyperDbg.
Definition RequestStructures.h:1060
The structure of changing core packet in HyperDbg.
Definition RequestStructures.h:599
The structure of changing process and show process packet in HyperDbg.
Definition RequestStructures.h:924
The structure of changing thead and show thread packet in HyperDbg.
Definition RequestStructures.h:963
The structure of user-input packet in HyperDbg.
Definition DataTypes.h:156
Register Descriptor Structure to use in r command.
Definition RequestStructures.h:1156
UINT32 RegisterId
Definition RequestStructures.h:1157
UINT32 KernelStatus
Definition RequestStructures.h:1159
Register Descriptor Structure to write on registers.
Definition RequestStructures.h:1171
UINT64 Value
Definition RequestStructures.h:1173
UINT32 RegisterId
Definition RequestStructures.h:1172
UINT32 KernelStatus
Definition RequestStructures.h:1174
The structure of result of search packet in HyperDbg.
Definition RequestStructures.h:1142
UINT32 CountOfResults
Definition RequestStructures.h:1143
UINT32 Result
Definition RequestStructures.h:1144
The structure of script packet in HyperDbg.
Definition RequestStructures.h:1122
UINT32 Result
Definition RequestStructures.h:1126
The structure of stepping packet in HyperDbg.
Definition RequestStructures.h:1007
BOOLEAN IsCurrentInstructionACall
Definition RequestStructures.h:1014
UINT32 CallLength
Definition RequestStructures.h:1015
DEBUGGER_REMOTE_STEPPING_REQUEST StepType
Definition RequestStructures.h:1008
The structure of .sym reload packet in HyperDbg.
Definition RequestStructures.h:1047
The structure of user-input packet in HyperDbg.
Definition DataTypes.h:140
UINT32 CommandLen
Definition DataTypes.h:141
request for callstack frames
Definition RequestStructures.h:789
UINT32 Size
Definition RequestStructures.h:793
UINT32 KernelStatus
Definition RequestStructures.h:791
BOOLEAN Is32Bit
Definition RequestStructures.h:790
UINT64 BaseAddress
Definition RequestStructures.h:795
request for test query buffers
Definition RequestStructures.h:333
request for edit virtual and physical memory
Definition RequestStructures.h:482
Status of register buffers.
Definition Events.h:423
request for flushing buffers
Definition RequestStructures.h:294
request for modifying events (enable/disable/clear)
Definition Events.h:242
requests for the '.pagein' command
Definition RequestStructures.h:73
request for reading virtual and physical memory
Definition RequestStructures.h:266
UINT32 KernelStatus
Definition RequestStructures.h:275
UINT32 ReturnLength
Definition RequestStructures.h:274
request for !pte command
Definition RequestStructures.h:22
The structure of remote packets in HyperDbg.
Definition Connection.h:183
DEBUGGER_REMOTE_PACKET_REQUESTED_ACTION RequestedActionOfThePacket
Definition Connection.h:187
DEBUGGER_REMOTE_PACKET_TYPE TypeOfThePacket
Definition Connection.h:186
BYTE Checksum
Definition Connection.h:184
UINT64 Indicator
Definition Connection.h:185
request for searching memory
Definition RequestStructures.h:527
UINT64 Length
Definition RequestStructures.h:529
UINT64 Address
Definition RequestStructures.h:528
request for performing a short-circuiting event
Definition Events.h:256
The structure for saving the callstack frame of one parameter.
Definition RequestStructures.h:761
requests for !va2pa and !pa2va commands
Definition RequestStructures.h:54
GUEST_REGS * Regs
Definition State.h:168
CHAR KdRecvBuffer[MaxSerialPacketSize]
Definition State.h:188
BOOLEAN IgnoreDisasmInNextPacket
Definition State.h:171
Definition BasicTypes.h:70
UINT64 rsp
Definition BasicTypes.h:79