Check if the remote debuggee needs to pause the system and also process the debuggee's messages.
43{
82
83StartAgain:
84
87
88
89
90
91
93 {
94 if (LengthReceived == 0 && BufferToReceive[0] == NULL)
95 {
96
97
98
99 ShowMessages("\nthe remote connection is closed\n");
100
102 {
103
104
105
107
109 {
110 ShowSignatureWhenDisconnected =
TRUE;
111 }
112 }
113
115
116 if (ShowSignatureWhenDisconnected)
117 {
118 ShowSignatureWhenDisconnected =
FALSE;
119 ShowMessages("\n");
120 }
122 }
123 else
124 {
125 ShowMessages("err, invalid buffer received\n");
126 goto StartAgain;
127 }
128 }
129
130
131
132
133 if (LengthReceived == 1 && BufferToReceive[0] == NULL)
134 {
135 goto StartAgain;
136 }
137
139
141 {
142
143
144
146 LengthReceived -
sizeof(
BYTE)) != TheActualPacket->
Checksum)
147 {
148 ShowMessages("\nerr, checksum is invalid\n");
149 goto StartAgain;
150 }
151
152
153
154
156 {
157
158
159
160
161 ShowMessages("\nerr, unknown packet received from the debuggee\n");
162 goto StartAgain;
163 }
164
165
166
167
169 {
171
172
173
174
176
177 break;
178
180
182
183
184
185
187
188 ShowMessages(
"connected to debuggee %s\n", InitPacket->
OsName);
189
190
191
192
194
195 break;
196
198
200
201
202
203
207 {
208
209
210
211
213 {
214 ShowMessages(
"%s", MessagePacket->
Message);
215 }
216 }
217
218 break;
219
221
222
223
224
226
228
229
230
231
233
234
235
236
238
239
240
241
244
246
247
248
249
251 {
253
255 {
256
257
258
259 ShowMessages("breakpoint 0x%x hit\n",
261 }
262
263 break;
264
266
268 {
269
270
271
273 {
274 ShowMessages("event 0x%x triggered (post)\n",
276 }
277 else
278 {
279 ShowMessages("event 0x%x triggered (pre)\n",
281 }
282 }
283
284 break;
285
287
288 ShowMessages("switched to the specified process\n");
289
290 break;
291
293
294 ShowMessages("switched to the specified thread\n");
295
296 break;
297
299
300 ShowMessages("the target module is loaded and a breakpoint is set to the entrypoint\n"
301 "press 'g' to reach to the entrypoint of the main module...\n");
302
303 break;
304
305 default:
306 break;
307 }
308
310 {
311
312
313
315 {
316
317
318
319
323 {
324 ShowMessages("oOh, no! there might be a misinterpretation in disassembling the current instruction\n");
325 }
326 }
327
329 {
330
331
332
336 1,
339 }
340 else
341 {
342
343
344
348 1,
351 }
352 }
353
355 {
362
363
364
365
367
368 break;
369
371
372
373
374
379
380
381
382
384
385 break;
386
388
389
390
391
392 ShowMessages("\n");
394
395 break;
396
398
399
400
401
402 break;
403
405
406
407
408
410
411 break;
412
414
415
416
417
418 ShowMessages("\n");
420
421 break;
422
424
425
426
427
428
430
431 break;
432
433 default:
434
435 ShowMessages("err, unknown pausing reason is received\n");
436
437 break;
438 }
439
440 break;
441
443
445
447 {
448 ShowMessages("current operating core changed to 0x%x\n",
450 }
451 else
452 {
454
455
456
457
459 }
460
461 break;
462
464
466
468 {
470 {
471 ShowMessages("process id: %x\nprocess (_EPROCESS): %s\nprocess name (16-Byte): %s\n",
475 }
477 {
478 ShowMessages(
479 "press 'g' to continue the debuggee, if the pid or the "
480 "process object address is valid then the debuggee will "
481 "be automatically paused when it attached to the target process\n");
482 }
483 }
484 else
485 {
487 }
488
489
490
491
493
494 break;
495
497
499
501 {
503 {
504 ShowMessages("not found\n");
505 }
506 }
507 else
508 {
510 }
511
512
513
514
516
517 break;
518
520
522
524 {
526 {
527 ShowMessages("thread id: %x (pid: %x)\nthread (_ETHREAD): %s\nprocess (_EPROCESS): %s\nprocess name (16-Byte): %s\n",
533 }
535 {
536 ShowMessages(
537 "press 'g' to continue the debuggee, if the tid or the "
538 "thread object address is valid then the debuggee will "
539 "be automatically paused when it attached to the target thread\n");
540 }
541 }
542 else
543 {
545 }
546
547
548
549
551
552 break;
553
555
557
559 {
560
561
562
563
564 ShowMessages("flushing buffers was successful, total %d messages were "
565 "cleared.\n",
567 }
568 else
569 {
571 }
572
573
574
575
577
578 break;
579
581
584
586 {
587
588
589
594 }
595 else
596 {
598 }
599
600
601
602
604
605 break;
606
608
610
612 {
614 {
616
617 ShowMessages("breakpoint interception (#BP) is deactivated\n"
618 "from now, the breakpoints will be re-injected into the guest debuggee\n");
619
620 break;
621
623
624 ShowMessages("breakpoint interception (#BP) is activated\n");
625
626 break;
627
629
630 ShowMessages("debug break interception (#DB) is deactivated\n"
631 "from now, the debug breaks will be re-injected into the guest debuggee\n");
632
633 break;
634
636
637 ShowMessages("debug break interception (#DB) is activated\n");
638
639 break;
640
641 default:
642 break;
643 }
644 }
645 else
646 {
648 }
649
650
651
652
654
655 break;
656
658
660
662 {
663
664
665
666 }
667 else
668 {
670 }
671
673 {
674
675
676
678 }
679
680
681
682
684
685 break;
686
688
690
691
692
693
694
695
698
699 break;
700
702
704
705
706
707
709
710
711
712
714
715 break;
716
718
720
721
722
723
725
726
727
728
730
731 break;
732
734
736
737
738
739
741 {
742
743
744
746 }
748 {
749
750
751
753 }
754 else
755 {
757 EventModifyAndQueryPacket);
758 }
759
760
761
762
763
765
766 break;
767
769
771
772
773
774
776 {
777
778
779
781 }
782 else
783 {
784
785
786
788 }
789
790
791
792
794
795 break;
796
798
800
801
802
803
805
806
807
808
809 memcpy(CallerAddress, ReadRegisterPacket, CallerSize);
810
811
812
813
815
816 break;
817
819
821
822
823
824
826
827
828
829
830 memcpy(CallerAddress, WriteRegisterPacket, CallerSize);
831
832
833
834
836
837 break;
838
840
842
843
844
845
847
848
849
850
851 memcpy(CallerAddress, ApicRequestPacket, CallerSize);
852
853
854
855
857
858 break;
859
861
863
864
865
866
868
869
870
871
872 memcpy(CallerAddress, IdtEntryRequestPacket, CallerSize);
873
874
875
876
878
879 break;
880
882
884
885
886
887
889
890
891
892
893 memcpy(CallerAddress, ReadMemoryPacket, CallerSize);
894
895
896
897
899
900 break;
901
903
905
906
907
908
910
911
912
913
914 memcpy(CallerAddress, EditMemoryPacket, CallerSize);
915
916
917
918
920
921 break;
922
924
926
928 {
929
930
931
932 }
933 else
934 {
936 }
937
938
939
940
942
943 break;
944
946
948
950 {
951 ShowMessages(
"the event's short-circuiting state changed to %s\n", ShortCircuitingPacket->
IsShortCircuiting ?
"'on'" :
"'off'");
952 }
953 else
954 {
956 }
957
958
959
960
962
963 break;
964
966
968
970 {
971
972
973
975 }
976 else
977 {
979 }
980
981
982
983
985
986 break;
987
989
991
992
993
994
996
997
998
999
1000 memcpy(CallerAddress, SmiOperationPacket, CallerSize);
1001
1002
1003
1004
1006
1007 break;
1008
1010
1012
1013
1014
1015
1017
1018
1019
1020
1021 memcpy(CallerAddress, HyperTraceLbrdumpPacket, CallerSize);
1022
1023
1024
1025
1027
1028 break;
1029
1031
1033
1034
1035
1036
1038
1039
1040
1041
1042 memcpy(CallerAddress, HyperTracePtOperationPacket, CallerSize);
1043
1044
1045
1046
1048
1049 break;
1050
1052
1054
1056 {
1057
1058
1059
1060 ShowMessages("the page-fault is delivered to the target thread\n"
1061 "press 'g' to continue debuggee (the current thread will execute ONLY one instruction and will be halted again)...\n");
1062 }
1063 else
1064 {
1066 }
1067
1068
1069
1070
1072
1073 break;
1074
1076
1078
1080 {
1082 {
1084 }
1085 else
1086 {
1088 }
1089 }
1090 else
1091 {
1093 }
1094
1095
1096
1097
1099
1100 break;
1101
1103
1105
1107 {
1108
1109
1110
1111 }
1112 else
1113 {
1115 }
1116
1117
1118
1119
1120
1122
1123 break;
1124
1126
1128
1129
1130
1132
1133 break;
1134
1136
1138
1140 {
1141
1142
1143
1144 ShowMessages("%-12s | %-9s | %-17s | %s \n%s\n", "DBDF", "VID:DID", "Vendor Name", "Device Name", "----------------------------------------------------------------------");
1146 {
1148 char * CurrentVendorName = (char *)"N/A";
1149 char * CurrentDeviceName = (char *)"N/A";
1150
1151 if (CurrentVendor != NULL)
1152 {
1153 CurrentVendorName = CurrentVendor->
VendorName;
1155
1156 if (CurrentDevice != NULL)
1157 {
1158 CurrentDeviceName = CurrentDevice->
DeviceName;
1159 }
1160 }
1161
1162 ShowMessages("%04x:%02x:%02x:%x | %04x:%04x | %-17.*s | %.*s\n",
1163 0,
1170 CurrentVendorName,
1172 CurrentDeviceName
1173
1174 );
1175
1177 }
1179 }
1180 else
1181 {
1183 }
1184
1185
1186
1187
1189
1190 break;
1191
1193
1195
1197 {
1198
1199 const CHAR * PciHeaderTypeAsString[] = {
"Endpoint",
"PCI-to-PCI Bridge",
"PCI-to-CardBus Bridge"};
1200 const CHAR * PciMmioBarTypeAsString[] = {
"32-bit Wide",
1201 "Reserved",
1202 "64-bit Wide",
1203 "Reserved"};
1204 UINT8 BarNumOffset = 0;
1205
1206 ShowMessages("PCI configuration space (CAM) for device %04x:%02x:%02x:%x\n",
1207 0,
1211
1213 {
1215 CHAR * CurrentVendorName = (
CHAR *)
"N/A";
1216 CHAR * CurrentDeviceName = (
CHAR *)
"N/A";
1217
1218 if (CurrentVendor != NULL)
1219 {
1220 CurrentVendorName = CurrentVendor->
VendorName;
1222
1223 if (CurrentDevice != NULL)
1224 {
1225 CurrentDeviceName = CurrentDevice->
DeviceName;
1226 }
1227 }
1228
1229 ShowMessages("\nCommon Header:\nVID:DID: %04x:%04x\nVendor Name: %-17.*s\nDevice Name: %.*s\nCommand: %04x\n",
1233 CurrentVendorName,
1235 CurrentDeviceName,
1237
1239 {
1240 ShowMessages(" Memory Space: %u\n I/O Space: %u\n",
1243 }
1244
1245 ShowMessages("Status: %04x\nRevision ID: %02x\nClass Code: %06x\nCacheLineSize: %02x\nPrimaryLatencyTimer: %02x\nHeaderType: %s (%02x)\n Multi-function Device: %s\nBist: %02x\n",
1257
1258 ShowMessages("\nDevice Header:\n");
1259
1261 {
1262 for (
UINT8 i = 0; i < 5; i++)
1263 {
1264
1266 {
1267
1269 {
1272 UINT64 ActualBar = ((BarMsb & 0xFFFFFFFF) << 32) + (BarLsb & 0xFFFFFFF0);
1273
1274 ShowMessages("BAR%u %s\n BAR Type: MMIO\n MMIO BAR Type: %s (%02x)\n BAR MSB: %08x\n BAR LSB: %08x\n BAR (actual): %016llx\n Prefetchable: %s\n",
1275 i - BarNumOffset,
1279 BarMsb,
1280 BarLsb,
1281 ActualBar,
1283 i++;
1284 BarNumOffset++;
1285 }
1286
1287 else
1288 {
1290
1291 ShowMessages("BAR%u %s\n BAR Type: MMIO\n BAR: %08x\n BAR (actual): %08x\n Prefetchable: %s\n",
1292 i - BarNumOffset,
1295 ActualBar,
1297 }
1298 }
1299
1300 else
1301 {
1302
1304
1305 ShowMessages("BAR%u %s\n BAR Type: Port IO\n BAR: %08x\n BAR (actual): %08x\n Reserved: %u\n",
1306 i - BarNumOffset,
1309 ActualBar32,
1311 }
1312 }
1313
1314 ShowMessages("Cardbus CIS Pointer: %08x\nSubsystem Vendor ID: %04x\nSubsystem ID: %04x\nROM BAR: %08x\nCapabilities Pointer: %02x\nReserved (0xD): %06x\nReserved (0xE): %08x\nInterrupt Line: %02x\nInterrupt Pin: %02x\nMin Grant: %02x\nMax latency: %02x\n",
1326 }
1328 {
1330
1331 ShowMessages("Primary Bus Number: %02x\nSecondary Bus Number: %02x\nSubordinate Bus Number: %02x\nSecondary Latency Timer: %02x\nI/O Base: %02x\nI/O Limit: %02x\nSecondary Status: %04x\nMemory Base: %04x\nMemory Limit: %04x\nPrefetchable Memory Base: %04x\nPrefetchable Memory Limit: %04x\nPrefetchable Base Upper 32 Bits: %08x\nPrefetchable Limit Upper 32 Bits: %08x\nI/O Base Upper 16 Bits: %04x\nI/O Limit Upper 16 Bits: %04x\nCapability Pointer: %02x\nReserved: %06x\nROM BAR: %08x\nInterrupt Line: %02x\nInterrupt Pin: %02x\nBridge Control: %04x\n",
1353 }
1355 {
1357 }
1358 else
1359 {
1361 }
1362 }
1363 else
1364 {
1366
1367 ShowMessages(" 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f\n");
1368
1370 {
1371 ShowMessages("%02x: ", i);
1372 for (
UINT8 j = 0; j < 16; j++)
1373 {
1374 ShowMessages(
"%02x ", *(((
BYTE *)cs) + j));
1375 }
1376
1377
1378
1379 for (
UINT8 j = 0; j < 16; j++)
1380 {
1382 if (c >= 32 && c <= 126)
1383 {
1384 ShowMessages("%c", c);
1385 }
1386 else
1387 {
1388 ShowMessages(".");
1389 }
1390 }
1391 ShowMessages("\n");
1392 cs += 4;
1393 }
1394 }
1395 }
1396 else
1397 {
1399 }
1400
1401
1402
1403
1405
1406 break;
1407
1408 default:
1409 ShowMessages("err, unknown packet action received from the debugger\n");
1410 break;
1411 }
1412 }
1413 else
1414 {
1415
1416
1417
1418 ShowMessages("err, invalid packet received\n");
1419
1420 }
1421
1422
1423
1424
1425 goto StartAgain;
1426
1428}
BOOLEAN g_IsSerialConnectedToRemoteDebuggee
Shows if the debugger was connected to remote debuggee over (A remote guest).
Definition globals.h:253
VOID CallstackShowFrames(PDEBUGGER_SINGLE_CALLSTACK_FRAME CallstackFrames, UINT32 FrameCount, DEBUGGER_CALLSTACK_DISPLAY_METHOD DisplayMethod, BOOLEAN Is32Bit)
Show stack frames.
Definition callstack.cpp:212
string SeparateTo64BitValue(UINT64 Value)
ULONG g_CurrentRemoteCore
Current core that the debuggee is debugging.
Definition globals.h:285
UINT64 g_KernelBaseAddress
Shows the kernel base address.
Definition globals.h:576
BOOLEAN ShowErrorMessage(UINT32 Error)
shows the error message
Definition debugger.cpp:40
UINT32 HyperDbgLengthDisassemblerEngine(UCHAR *BufferToDisassemble, UINT64 BuffLength, BOOLEAN Isx86_64)
Length Disassembler engine based on Zydis.
Definition disassembler.cpp:856
INT HyperDbgDisassembler64(UCHAR *BufferToDisassemble, UINT64 BaseAddress, UINT64 Size, UINT32 MaximumInstrDecoded, BOOLEAN ShowBranchIsTakenOrNot, PRFLAGS Rflags)
Disassemble x64 assemblies.
Definition disassembler.cpp:333
INT HyperDbgDisassembler32(UCHAR *BufferToDisassemble, UINT64 BaseAddress, UINT64 Size, UINT32 MaximumInstrDecoded, BOOLEAN ShowBranchIsTakenOrNot, PRFLAGS Rflags)
Disassemble 32 bit assemblies.
Definition disassembler.cpp:373
VOID CommandEventsHandleModifiedEvent(UINT64 Tag, PDEBUGGER_MODIFY_EVENTS ModifyEventRequest)
Handle events after modification.
Definition events.cpp:503
VOID CommandEventsClearAllEventsAndResetTags()
Clears all the events and resets the tag.
Definition events.cpp:474
BOOLEAN ForwardingCheckAndPerformEventForwarding(UINT32 OperationCode, CHAR *Message, UINT32 MessageLength)
Check and send the event result to the corresponding sources.
Definition forwarding.cpp:439
BOOLEAN g_IsRunningInstruction32Bit
whether the Current executing instructions is 32-bit or 64 bit
Definition globals.h:232
BYTE g_CurrentRunningInstruction[MAXIMUM_INSTR_SIZE]
Current executing instructions.
Definition globals.h:226
RFLAGS * PRFLAGS
Definition pch.h:34
DEBUGGER_EVENT_AND_ACTION_RESULT g_DebuggeeResultOfRegisteringEvent
Holds the result of registering events from the remote debuggee.
Definition globals.h:305
BOOLEAN KdCloseConnection()
Send close packet to the debuggee and debugger.
Definition kd.cpp:3056
BOOLEAN g_IsDebuggeeRunning
Shows if the debuggee is running or not.
Definition globals.h:272
BOOLEAN KdSendResponseOfThePingPacket()
Respond to the debuggee with the version and build date of the debugger.
Definition kd.cpp:2121
BOOLEAN g_IgnoreNewLoggingMessages
Shows if the debugger should show debuggee's messages or not.
Definition globals.h:279
DEBUGGER_EVENT_AND_ACTION_RESULT g_DebuggeeResultOfAddingActionsToEvent
Holds the result of adding action to events from the remote debuggee.
Definition globals.h:311
BOOLEAN KdReceivePacketFromDebuggee(CHAR *BufferToSave, UINT32 *LengthReceived)
Receive packet from the debuggee.
Definition kd.cpp:1558
BOOLEAN g_SharedEventStatus
This is an OVERLAPPED structure for managing simultaneous read and writes for debugger (in current de...
Definition globals.h:331
UINT64 g_ResultOfEvaluatedExpression
Result of the expression that is evaluated in the debuggee.
Definition globals.h:640
UINT32 g_ErrorStateOfResultOfEvaluatedExpression
Shows the state of the evaluation of expression which whether contains error or not.
Definition globals.h:647
BOOLEAN g_OutputSourcesInitialized
it shows whether the debugger started using output sources or not or in other words,...
Definition globals.h:418
Device * GetDeviceFromVendor(Vendor *VendorToUse, UINT16 DeviceId)
Returns Device entry corresponding to DeviceId.
Definition pci-id.cpp:339
Vendor * GetVendorById(UINT16 VendorId)
Returns Vendor entry, including corresponding devices and subdevices.
Definition pci-id.cpp:305
VOID FreePciIdDatabase()
Frees PciIdDatabaseBuffer.
Definition pci-id.cpp:288
VOID FreeVendor(Vendor *VendorToFree)
Frees Vendor and all of its members.
Definition pci-id.cpp:260
#define PCI_NAME_STR_LENGTH
Definition pci-id.h:15
VOID CommandPteShowResults(UINT64 TargetVa, PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS PteRead)
show results of !pte command
Definition pte.cpp:48
UINT32 Result
Definition RequestStructures.h:1556
UINT32 Result
Definition RequestStructures.h:1523
UINT32 Result
Definition RequestStructures.h:649
UINT32 NewCore
Definition RequestStructures.h:648
UINT32 ProcessId
Definition RequestStructures.h:982
UINT64 Process
Definition RequestStructures.h:983
DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_TYPE ActionType
Definition RequestStructures.h:981
UINT32 Result
Definition RequestStructures.h:987
UCHAR ProcessName[16]
Definition RequestStructures.h:985
UCHAR ProcessName[16]
Definition RequestStructures.h:1025
DEBUGGEE_DETAILS_AND_SWITCH_THREAD_TYPE ActionType
Definition RequestStructures.h:1019
UINT64 Thread
Definition RequestStructures.h:1022
UINT64 Process
Definition RequestStructures.h:1023
UINT32 ProcessId
Definition RequestStructures.h:1021
UINT32 ThreadId
Definition RequestStructures.h:1020
UINT32 Result
Definition RequestStructures.h:1027
UINT32 Result
Definition RequestStructures.h:1493
UINT64 Value
Definition RequestStructures.h:1492
UINT16 ReadInstructionLen
Definition DataTypes.h:250
UINT64 Rip
Definition DataTypes.h:241
UINT64 Rflags
Definition DataTypes.h:248
BOOLEAN IsProcessorOn32BitMode
Definition DataTypes.h:242
DEBUGGEE_PAUSING_REASON PausingReason
Definition DataTypes.h:244
UINT64 EventTag
Definition DataTypes.h:246
ULONG CurrentCore
Definition DataTypes.h:245
BYTE InstructionBytesOnRip[MAXIMUM_INSTR_SIZE]
Definition DataTypes.h:249
BOOLEAN IgnoreDisassembling
Definition DataTypes.h:243
VMM_CALLBACK_EVENT_CALLING_STAGE_TYPE EventCallingStage
Definition DataTypes.h:247
UINT32 OperationCode
Definition DataTypes.h:301
CHAR Message[PacketChunkSize]
Definition DataTypes.h:302
PCI_DEV DeviceInfo
Definition RequestStructures.h:1674
UINT32 KernelStatus
Definition RequestStructures.h:1672
BOOL PrintRaw
Definition RequestStructures.h:1673
UINT8 DeviceInfoListNum
Definition RequestStructures.h:1649
UINT32 KernelStatus
Definition RequestStructures.h:1648
PCI_DEV_MINIMAL DeviceInfoList[DEV_MAX_NUM]
Definition RequestStructures.h:1650
UINT32 CountOfResults
Definition RequestStructures.h:1604
UINT32 Result
Definition RequestStructures.h:1605
BOOLEAN IsFormat
Definition RequestStructures.h:1586
UINT32 Result
Definition RequestStructures.h:1588
UINT64 KernelStatus
Definition Symbols.h:92
UINT32 KernelStatus
Definition RequestStructures.h:845
UINT32 FrameCount
Definition RequestStructures.h:848
BOOLEAN Is32Bit
Definition RequestStructures.h:844
DEBUGGER_CALLSTACK_DISPLAY_METHOD DisplayMethod
Definition RequestStructures.h:846
UINT32 KernelStatus
Definition RequestStructures.h:360
DEBUGGER_TEST_QUERY_STATE RequestType
Definition RequestStructures.h:358
UINT32 CountOfMessagesThatSetAsReadFromVmxRoot
Definition RequestStructures.h:321
UINT32 CountOfMessagesThatSetAsReadFromVmxNonRoot
Definition RequestStructures.h:322
UINT32 KernelStatus
Definition RequestStructures.h:320
DEBUGGER_MODIFY_EVENTS_TYPE TypeOfAction
Definition Events.h:249
BOOLEAN IsEnabled
Definition Events.h:250
UINT64 KernelStatus
Definition Events.h:247
UINT64 Tag
Definition Events.h:246
UINT32 KernelStatus
Definition RequestStructures.h:109
UINT64 KernelBaseAddress
Definition RequestStructures.h:634
CHAR OsName[MAXIMUM_CHARACTER_FOR_OS_NAME]
Definition RequestStructures.h:636
UINT64 VirtualAddress
Definition RequestStructures.h:55
UINT32 KernelStatus
Definition RequestStructures.h:70
BOOLEAN IsShortCircuiting
Definition Events.h:263
UINT64 KernelStatus
Definition Events.h:262
MODULE_SYMBOL_DETAIL SymbolDetailPacket
Definition Symbols.h:78
BOOLEAN IsVirtual2Physical
Definition RequestStructures.h:89
UINT32 KernelStatus
Definition RequestStructures.h:90
UINT64 PhysicalAddress
Definition RequestStructures.h:87
UINT64 VirtualAddress
Definition RequestStructures.h:86
PORTABLE_PCI_CONFIG_SPACE_HEADER_MINIMAL ConfigSpace
Definition Pcie.h:137
UINT8 Bus
Definition Pcie.h:134
UINT8 Function
Definition Pcie.h:136
UINT8 Device
Definition Pcie.h:135
BOOL IsEnabled
Definition Pcie.h:147
UINT8 Device
Definition Pcie.h:169
UINT8 Bus
Definition Pcie.h:168
UINT8 Function
Definition Pcie.h:170
PCI_DEV_MMIOBAR_INFO MmioBarInfo[6]
Definition Pcie.h:173
PORTABLE_PCI_CONFIG_SPACE_HEADER ConfigSpace
Definition Pcie.h:171
UINT8 Bist
Definition Pcie.h:60
UINT8 ClassCode[3]
Definition Pcie.h:56
UINT8 RevisionId
Definition Pcie.h:55
UINT16 Command
Definition Pcie.h:53
UINT8 CacheLineSize
Definition Pcie.h:57
UINT16 VendorId
Definition Pcie.h:51
UINT16 DeviceId
Definition Pcie.h:52
UINT8 HeaderType
Definition Pcie.h:59
UINT16 Status
Definition Pcie.h:54
UINT8 PrimaryLatencyTimer
Definition Pcie.h:58
UINT16 VendorId
Definition Pcie.h:123
UINT16 DeviceId
Definition Pcie.h:124
PORTABLE_PCI_COMMON_HEADER CommonHeader
Definition Pcie.h:158
PORTABLE_PCI_DEVICE_HEADER DeviceHeader
Definition Pcie.h:159
UINT8 InterruptPin
Definition Pcie.h:107
UINT16 PrefetchableMemoryLimit
Definition Pcie.h:98
UINT8 IoLimit
Definition Pcie.h:93
UINT16 IoLimitUpper16b
Definition Pcie.h:102
UINT8 CapabilityPtr
Definition Pcie.h:103
UINT8 IoBase
Definition Pcie.h:92
UINT32 PrefetchableLimitUpper32b
Definition Pcie.h:100
UINT8 InterruptLine
Definition Pcie.h:106
UINT16 MemoryBase
Definition Pcie.h:95
UINT8 SecondaryLatencyTimer
Definition Pcie.h:91
UINT8 PrimaryBusNumber
Definition Pcie.h:88
UINT16 PrefetchableMemoryBase
Definition Pcie.h:97
UINT32 PrefetchableBaseUpper32b
Definition Pcie.h:99
UINT16 MemoryLimit
Definition Pcie.h:96
UINT32 Bar[2]
Definition Pcie.h:87
UINT16 SecondaryStatus
Definition Pcie.h:94
UINT8 SubordinateBusNumber
Definition Pcie.h:90
UINT8 Reserved[3]
Definition Pcie.h:104
UINT16 IoBaseUpper16b
Definition Pcie.h:101
UINT32 ROMBar
Definition Pcie.h:105
UINT8 SecondaryBusNumber
Definition Pcie.h:89
UINT16 BridgeControl
Definition Pcie.h:108
UINT8 MinGnt
Definition Pcie.h:81
UINT8 InterruptPin
Definition Pcie.h:80
UINT32 Bar[6]
Definition Pcie.h:71
UINT8 InterruptLine
Definition Pcie.h:79
UINT32 CardBusCISPtr
Definition Pcie.h:72
UINT8 CapabilitiesPtr
Definition Pcie.h:76
UINT16 SubSystemId
Definition Pcie.h:74
UINT32 Reserved1
Definition Pcie.h:78
UINT16 SubVendorId
Definition Pcie.h:73
UINT8 Reserved[3]
Definition Pcie.h:77
UINT8 MaxLat
Definition Pcie.h:82
UINT32 ROMBar
Definition Pcie.h:75
CHAR DeviceName[PCI_NAME_STR_LENGTH]
Definition pci-id.h:28
CHAR VendorName[PCI_NAME_STR_LENGTH]
Definition pci-id.h:36
BOOLEAN SymbolBuildAndUpdateSymbolTable(PMODULE_SYMBOL_DETAIL SymbolDetail)
Allocate (build) and update the symbol table whenever a debuggee is attached on the debugger mode.
Definition symbol.cpp:1210
VOID SymbolInitialReload()
Initial load of symbols (for previously download symbols).
Definition symbol.cpp:33
VOID CommandTrackHandleReceivedInstructions(UCHAR *BufferToDisassemble, UINT32 BuffLength, BOOLEAN Isx86_64, UINT64 RipAddress)
Handle received 'call' or 'ret'.
Definition track.cpp:212
struct _PORTABLE_PCI_DEVICE_HEADER::_PORTABLE_PCI_EP_HEADER ConfigSpaceEp
struct _PORTABLE_PCI_DEVICE_HEADER::_PORTABLE_PCI_BRIDGE_HEADER ConfigSpacePtpBridge