Add new breakpoints.
951{
955
956
957
958
959 if (SwitchToTargetMemoryLayout)
960 {
961
962
963
966 {
967
968
969
972 }
973
975 }
976 else
977 {
979 }
980
981
982
983
984
985
986
987
990 {
991
992
993
996 }
997
998
999
1000
1002 {
1003
1004
1005
1008 }
1009
1010
1011
1012
1013 if (SwitchToTargetMemoryLayout)
1014 {
1016 {
1019 }
1020 }
1021 else
1022 {
1024 {
1027 }
1028 }
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1046
1047 if (BreakpointDescriptor == NULL)
1048 {
1049
1050
1051
1052
1055 }
1056
1057
1058
1059
1064 GuestCr3);
1065 BreakpointDescriptor->
Core = BpDescriptorArg->
Core;
1066 BreakpointDescriptor->
Pid = BpDescriptorArg->
Pid;
1067 BreakpointDescriptor->
Tid = BpDescriptorArg->
Tid;
1070
1071
1072
1073
1074 if (BpDescriptorArg->
Address & 0xff00000000000000)
1075 {
1076
1077
1078
1079 IsAddress32Bit =
FALSE;
1080 }
1081 else
1082 {
1083
1084
1085
1086
1087 if (SwitchToTargetMemoryLayout)
1088 {
1090 }
1091 else
1092 {
1094 }
1095 }
1096
1097
1098
1099
1100 if (SwitchToTargetMemoryLayout)
1101 {
1104 IsAddress32Bit,
1105 BpDescriptorArg->
Pid);
1106 }
1107 else
1108 {
1111 IsAddress32Bit);
1112 }
1113
1114
1115
1116
1118
1119
1120
1121
1123
1124
1125
1126
1128
1129
1130
1131
1133
1135}
BOOLEAN BreakpointWrite(PDEBUGGEE_BP_DESCRIPTOR BreakpointDescriptor, BOOLEAN SwitchToTargetMemoryLayout)
writes the 0xcc and applies the breakpoint @detail this function won't remove the descriptor from the...
Definition BreakpointCommands.c:780
PDEBUGGEE_BP_DESCRIPTOR BreakpointGetEntryByAddress(UINT64 Address)
Find entry of breakpoint descriptor from list of breakpoints by address.
Definition BreakpointCommands.c:919
BOOLEAN KdIsGuestOnUsermode32Bit()
determines if the guest was in 32-bit user-mode or 64-bit (long mode)
Definition Kd.c:3220
UINT64 PoolManagerRequestPool(POOL_ALLOCATION_INTENTION Intention, BOOLEAN RequestNewPool, UINT32 Size)
This function should be called from vmx-root in order to get a pool from the list.
Definition PoolManager.c:230
BOOLEAN UserAccessIsWow64Process(HANDLE ProcessId, PBOOLEAN Is32Bit)
Detects whether process is 32-bit or 64-bit.
Definition UserAccess.c:753
IMPORT_EXPORT_VMM BOOLEAN CheckAccessValidityAndSafetyByProcessId(UINT64 TargetAddress, UINT32 Size, UINT32 ProcessId)
Check the safety to access the memory by process ID.
Definition AddressCheck.c:332
IMPORT_EXPORT_VMM BOOLEAN CheckAccessValidityAndSafety(UINT64 TargetAddress, UINT32 Size)
Check the safety to access the memory.
Definition AddressCheck.c:318
IMPORT_EXPORT_VMM UINT64 VirtualAddressToPhysicalAddressByProcessCr3(_In_ PVOID VirtualAddress, _In_ CR3_TYPE TargetCr3)
IMPORT_EXPORT_VMM UINT32 DisassemblerLengthDisassembleEngineInVmxRootOnTargetProcess(PVOID Address, BOOLEAN Is32Bit)
Disassembler length disassembler engine.
Definition Disassembler.c:297
IMPORT_EXPORT_VMM UINT32 DisassemblerLengthDisassembleEngineByProcessId(PVOID Address, BOOLEAN Is32Bit, UINT32 ProcessId)
Disassembler length disassembler engine.
Definition Disassembler.c:329
IMPORT_EXPORT_VMM CR3_TYPE LayoutGetCurrentProcessCr3()
Get cr3 of the target running process.
Definition Layout.c:55
IMPORT_EXPORT_VMM CR3_TYPE LayoutGetCr3ByProcessId(UINT32 ProcessId)
Converts pid to kernel cr3.
Definition Layout.c:24
_Use_decl_annotations_ BOOLEAN CommonValidateCoreNumber(UINT32 CoreNumber)
Validate core number.
Definition Common.c:256
BOOLEAN CommonIsProcessExist(UINT32 ProcId)
Checks whether the process with ProcId exists or not.
Definition Common.c:24
NULL()
Definition test-case-generator.py:530
UINT64 Flags
Definition BasicTypes.h:239
UINT64 BreakpointId
Definition State.h:73
BOOLEAN RemoveAfterHit
Definition State.h:84
BOOLEAN CheckForCallbacks
Definition State.h:85
UINT16 InstructionLength
Definition State.h:81
UINT64 Address
Definition State.h:76
LIST_ENTRY BreakpointsList
Definition State.h:74
BOOLEAN Enabled
Definition State.h:75
UINT64 PhysAddress
Definition State.h:77
UINT32 Pid
Definition State.h:78
UINT32 Tid
Definition State.h:79
UINT32 Core
Definition State.h:80
UINT32 Tid
Definition RequestStructures.h:1519
UINT32 Result
Definition RequestStructures.h:1523
BOOLEAN RemoveAfterHit
Definition RequestStructures.h:1521
UINT32 Core
Definition RequestStructures.h:1520
BOOLEAN CheckForCallbacks
Definition RequestStructures.h:1522
UINT64 Address
Definition RequestStructures.h:1517
UINT32 Pid
Definition RequestStructures.h:1518