Driver IOCTL Dispatcher.
24{
25 UNREFERENCED_PARAMETER(DeviceObject);
26
27 PIO_STACK_LOCATION IrpStack;
56 PVOID BufferToStoreThreadsAndProcessesDetails;
57 NTSTATUS Status;
60 SIZE_T ReturnSize;
62
63
64
65
66
68
70 {
71 IrpStack = IoGetCurrentIrpStackLocation(Irp);
72
73 switch (IrpStack->Parameters.DeviceIoControl.IoControlCode)
74 {
76
77
78
79
80 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength <
SIZEOF_REGISTER_EVENT || Irp->AssociatedIrp.SystemBuffer == NULL)
81 {
82 Status = STATUS_INVALID_PARAMETER;
83 LogError(
"Err, invalid parameter to IOCTL dispatcher");
84 break;
85 }
86
87
88
89
90
91
93
94 switch (RegisterEventRequest->
Type)
95 {
97
99
100 break;
102
104 {
105 Status = STATUS_SUCCESS;
106 }
107 else
108 {
110 }
111
112 break;
113 default:
114 LogError(
"Err, unknown notification type from user-mode");
115 Status = STATUS_INVALID_PARAMETER;
116 break;
117 }
118
119 break;
120
122
123
124
125
127
128
129
130
132 "$",
135
136 Status = STATUS_SUCCESS;
137
138 break;
139
141
142
143
144
146
147
148
149
151
152 Status = STATUS_SUCCESS;
153
154 break;
155
157
158
159
160 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength <
SIZEOF_DEBUGGER_READ_MEMORY || Irp->AssociatedIrp.SystemBuffer == NULL)
161 {
162 Status = STATUS_INVALID_PARAMETER;
163 LogError(
"Err, invalid parameter to IOCTL dispatcher");
164 break;
165 }
166
167 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
168 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
169
170 if (!InBuffLength || !OutBuffLength)
171 {
172 Status = STATUS_INVALID_PARAMETER;
173 break;
174 }
175
177
180 &ReturnSize) ==
TRUE)
181 {
182
183
184
186 }
187 else
188 {
189
190
191
193 }
194
195 Status = STATUS_SUCCESS;
196
197
198
199
200 DoNotChangeInformation =
TRUE;
201
202 break;
203
205
206
207
209 {
210 Status = STATUS_INVALID_PARAMETER;
211 LogError(
"Err, invalid parameter to IOCTL dispatcher");
212 break;
213 }
214
215 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
216 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
217
218 if (!InBuffLength)
219 {
220 Status = STATUS_INVALID_PARAMETER;
221 break;
222 }
223
225
226
227
228
230 {
231 if (!OutBuffLength)
232 {
233 Status = STATUS_INVALID_PARAMETER;
234 break;
235 }
236 }
237
238
239
240
241
243
244
245
246
247 if (Status == STATUS_SUCCESS)
248 {
249 Irp->IoStatus.Information = ReturnSize;
250
251
252
253
254 DoNotChangeInformation =
TRUE;
255 }
256
257 break;
258
260
261
262
263
265 {
266 Status = STATUS_INVALID_PARAMETER;
267 LogError(
"Err, invalid parameter to IOCTL dispatcher");
268 break;
269 }
270
271 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
272 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
273
274 if (!InBuffLength)
275 {
276 Status = STATUS_INVALID_PARAMETER;
277 break;
278 }
279
281
282
283
284
285
287
289 Status = STATUS_SUCCESS;
290
291
292
293
294 DoNotChangeInformation =
TRUE;
295
296 break;
297
299
300
301
302
303 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength <
sizeof(
DEBUGGER_GENERAL_EVENT_DETAIL) || Irp->AssociatedIrp.SystemBuffer == NULL)
304 {
305 Status = STATUS_INVALID_PARAMETER;
306 LogError(
"Err, invalid parameter to IOCTL dispatcher");
307 break;
308 }
309
310 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
311 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
312
313 if (!InBuffLength || !OutBuffLength)
314 {
315 Status = STATUS_INVALID_PARAMETER;
316 break;
317 }
318
320
321
322
323
324
328
330 Status = STATUS_SUCCESS;
331
332
333
334
335 DoNotChangeInformation =
TRUE;
336
337 break;
338
340
341
342
343
344 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength <
sizeof(
DEBUGGER_GENERAL_ACTION) || Irp->AssociatedIrp.SystemBuffer ==
NULL)
345 {
346 Status = STATUS_INVALID_PARAMETER;
347 LogError(
"Err, invalid parameter to IOCTL dispatcher");
348 break;
349 }
350
351 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
352 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
353
354 if (!InBuffLength || !OutBuffLength)
355 {
356 Status = STATUS_INVALID_PARAMETER;
357 break;
358 }
359
361
362
363
364
365
369
371 Status = STATUS_SUCCESS;
372
373
374
375
376 DoNotChangeInformation =
TRUE;
377
378 break;
379
381
382
383
384
386 {
387 Status = STATUS_INVALID_PARAMETER;
388 LogError(
"Err, invalid parameter to IOCTL dispatcher");
389 break;
390 }
391
392 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
393 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
394
395 if (!InBuffLength || !OutBuffLength)
396 {
397 Status = STATUS_INVALID_PARAMETER;
398 break;
399 }
400
402
403
404
405
406
408 {
409 Status = STATUS_INVALID_PARAMETER;
410 break;
411 }
412
413
414
415
416 if (DebuggerHideAndUnhideRequest->
IsHide ==
TRUE)
417 {
418
419
420
422 }
423 else
424 {
425
426
427
429 }
430
431 if (Status == STATUS_SUCCESS)
432 {
433
434
435
437 }
438 else
439 {
440
441
442
443 if (DebuggerHideAndUnhideRequest->
IsHide)
444 {
446 }
447 else
448 {
450 }
451 }
452
453
454
455
457
458
459
460
461 DoNotChangeInformation =
TRUE;
462
463 break;
464
466
467
468
469
471 {
472 Status = STATUS_INVALID_PARAMETER;
473 LogError(
"Err, invalid parameter to IOCTL dispatcher");
474 break;
475 }
476
477 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
478 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
479
480 if (!InBuffLength || !OutBuffLength)
481 {
482 Status = STATUS_INVALID_PARAMETER;
483 break;
484 }
485
487
488
489
490
491
493
494
495
496
498 Status = STATUS_SUCCESS;
499
500
501
502
503 DoNotChangeInformation =
TRUE;
504
505 break;
506
508
509
510
511
512 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength <
SIZEOF_DEBUGGER_EDIT_MEMORY || Irp->AssociatedIrp.SystemBuffer == NULL)
513 {
514 Status = STATUS_INVALID_PARAMETER;
515 LogError(
"Err, invalid parameter to IOCTL dispatcher");
516 break;
517 }
518
519 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
520 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
521
522 if (!InBuffLength || !OutBuffLength)
523 {
524 Status = STATUS_INVALID_PARAMETER;
525 break;
526 }
527
528
529
530
532
533
534
535
536
538 {
539 Status = STATUS_INVALID_PARAMETER;
540 break;
541 }
542
543
544
545
546
548
549
550
551
553 Status = STATUS_SUCCESS;
554
555
556
557
558 DoNotChangeInformation =
TRUE;
559
560 break;
561
563
564
565
566
568 {
569 Status = STATUS_INVALID_PARAMETER;
570 LogError(
"Err, invalid parameter to IOCTL dispatcher");
571 break;
572 }
573
574 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
575 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
576
577
578
579
580
582 {
583 Status = STATUS_INVALID_PARAMETER;
584 break;
585 }
586
587
588
589
591
592
593
594
595
597 {
598 Status = STATUS_INVALID_PARAMETER;
599 break;
600 }
601
602
603
604
605
607 {
608
609
610
611
612
614 }
615
616
617
618
619
621 Status = STATUS_SUCCESS;
622
623
624
625
626 DoNotChangeInformation =
TRUE;
627
628 break;
629
631
632
633
634
635 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength <
sizeof(
DEBUGGER_MODIFY_EVENTS) || Irp->AssociatedIrp.SystemBuffer ==
NULL)
636 {
637 Status = STATUS_INVALID_PARAMETER;
638 LogError(
"Err, invalid parameter to IOCTL dispatcher");
639 break;
640 }
641
642 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
643 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
644
645 if (!InBuffLength || !OutBuffLength)
646 {
647 Status = STATUS_INVALID_PARAMETER;
648 break;
649 }
650
652
653
654
655
656
658
660 Status = STATUS_SUCCESS;
661
662
663
664
665 DoNotChangeInformation =
TRUE;
666
667 break;
668
670
671
672
673
675 {
676 Status = STATUS_INVALID_PARAMETER;
677 LogError(
"Err, invalid parameter to IOCTL dispatcher");
678 break;
679 }
680
681 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
682 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
683
684 if (!InBuffLength || !OutBuffLength)
685 {
686 Status = STATUS_INVALID_PARAMETER;
687 break;
688 }
689
690
691
692
693
695
696
697
698
700
702 Status = STATUS_SUCCESS;
703
704
705
706
707 DoNotChangeInformation =
TRUE;
708
709 break;
710
712
713
714
715
717 {
718 Status = STATUS_INVALID_PARAMETER;
719 LogError(
"Err, invalid parameter to IOCTL dispatcher");
720 break;
721 }
722
723 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
724 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
725
726 if (!InBuffLength || !OutBuffLength)
727 {
728 Status = STATUS_INVALID_PARAMETER;
729 break;
730 }
731
732
733
734
735
737
738
739
740
742
744 Status = STATUS_SUCCESS;
745
746
747
748
749 DoNotChangeInformation =
TRUE;
750
751 break;
752
754
755
756
757
759 {
760 Status = STATUS_INVALID_PARAMETER;
761 LogError(
"Err, invalid parameter to IOCTL dispatcher");
762 break;
763 }
764
765 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
766 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
767
768 if (!InBuffLength || !OutBuffLength)
769 {
770 Status = STATUS_INVALID_PARAMETER;
771 break;
772 }
773
774
775
776
777
779
780
781
782
784
786 Status = STATUS_SUCCESS;
787
788
789
790
791 DoNotChangeInformation =
TRUE;
792
793 break;
794
796
797
798
799
801 {
802 Status = STATUS_INVALID_PARAMETER;
803 LogError(
"Err, invalid parameter to IOCTL dispatcher");
804 break;
805 }
806
807 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
808 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
809
810 if (!InBuffLength || !OutBuffLength)
811 {
812 Status = STATUS_INVALID_PARAMETER;
813 break;
814 }
815
816
817
818
819
821
822
823
824
826
828 Status = STATUS_SUCCESS;
829
830
831
832
833 DoNotChangeInformation =
TRUE;
834
835 break;
836
838
839
840
841
843 {
844 Status = STATUS_INVALID_PARAMETER;
845 LogError(
"Err, invalid parameter to IOCTL dispatcher");
846 break;
847 }
848
849 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
850 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
851
852 if (!InBuffLength || !OutBuffLength)
853 {
854 Status = STATUS_INVALID_PARAMETER;
855 break;
856 }
857
858
859
860
861
863
864
865
866
868
870 Status = STATUS_SUCCESS;
871
872
873
874
875 DoNotChangeInformation =
TRUE;
876
877 break;
878
880
881
882
883
885 {
886 Status = STATUS_INVALID_PARAMETER;
887 LogError(
"Err, invalid parameter to IOCTL dispatcher");
888 break;
889 }
890
891 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
892 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
893
894 if (!InBuffLength || !OutBuffLength)
895 {
896 Status = STATUS_INVALID_PARAMETER;
897 break;
898 }
899
900
901
902
903
905
906
907
908
911 {
912 Status = STATUS_INVALID_PARAMETER;
913 break;
914 }
915
916
917
918
920
922 Status = STATUS_SUCCESS;
923
924
925
926
927 DoNotChangeInformation =
TRUE;
928
929 break;
930
932
933
934
935
937 {
938 Status = STATUS_INVALID_PARAMETER;
939 LogError(
"Err, invalid parameter to IOCTL dispatcher");
940 break;
941 }
942
943 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
944 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
945
946 if (!InBuffLength || !OutBuffLength)
947 {
948 Status = STATUS_INVALID_PARAMETER;
949 break;
950 }
951
952
953
954
955
957
958
959
960
963 {
964 Status = STATUS_INVALID_PARAMETER;
965 break;
966 }
967
968
969
970
972
974 Status = STATUS_SUCCESS;
975
976
977
978
979 DoNotChangeInformation =
TRUE;
980
981 break;
982
984
985
986
987
989 {
990 Status = STATUS_INVALID_PARAMETER;
991 LogError(
"Err, invalid parameter to IOCTL dispatcher");
992 break;
993 }
994
995 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
996 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
997
998 if (!InBuffLength || !OutBuffLength)
999 {
1000 Status = STATUS_INVALID_PARAMETER;
1001 break;
1002 }
1003
1004
1005
1006
1007
1009
1010
1011
1012
1014
1016 Status = STATUS_SUCCESS;
1017
1018
1019
1020
1021 DoNotChangeInformation =
TRUE;
1022
1023 break;
1024
1026
1027
1028
1029
1031 {
1032 Status = STATUS_INVALID_PARAMETER;
1033 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1034 break;
1035 }
1036
1037 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1038 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1039
1040 if (!InBuffLength || !OutBuffLength)
1041 {
1042 Status = STATUS_INVALID_PARAMETER;
1043 break;
1044 }
1045
1046
1047
1048
1049
1051
1052
1053
1054
1056
1058 Status = STATUS_SUCCESS;
1059
1060
1061
1062
1063 DoNotChangeInformation =
TRUE;
1064
1065 break;
1066
1068
1069
1070
1071
1073 {
1074 Status = STATUS_INVALID_PARAMETER;
1075 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1076 break;
1077 }
1078
1079 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1080 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1081
1082 if (!InBuffLength || !OutBuffLength)
1083 {
1084 Status = STATUS_INVALID_PARAMETER;
1085 break;
1086 }
1087
1088
1089
1090
1091
1093
1094
1095
1096
1098
1100 Status = STATUS_SUCCESS;
1101
1102
1103
1104
1105 DoNotChangeInformation =
TRUE;
1106
1107 break;
1108
1110
1111
1112
1113
1114 if (IrpStack->Parameters.DeviceIoControl.InputBufferLength <
sizeof(
DEBUGGER_UD_COMMAND_PACKET) || Irp->AssociatedIrp.SystemBuffer == NULL)
1115 {
1116 Status = STATUS_INVALID_PARAMETER;
1117 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1118 break;
1119 }
1120
1121 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1122 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1123
1124 if (!InBuffLength || !OutBuffLength)
1125 {
1126 Status = STATUS_INVALID_PARAMETER;
1127 break;
1128 }
1129
1130
1131
1132
1133
1135
1136
1137
1138
1140
1142 Status = STATUS_SUCCESS;
1143
1144
1145
1146
1147 DoNotChangeInformation =
TRUE;
1148
1149 break;
1150
1152
1153 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1154
1155 if (!OutBuffLength)
1156 {
1157 Status = STATUS_INVALID_PARAMETER;
1158 break;
1159 }
1160
1161
1162
1163
1164 BufferToStoreThreadsAndProcessesDetails = (PVOID)Irp->AssociatedIrp.SystemBuffer;
1165
1166
1167
1168
1170
1171 Irp->IoStatus.Information = OutBuffLength;
1172 Status = STATUS_SUCCESS;
1173
1174
1175
1176
1177 DoNotChangeInformation =
TRUE;
1178
1179 break;
1180
1182
1183
1184
1185
1187 {
1188 Status = STATUS_INVALID_PARAMETER;
1189 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1190 break;
1191 }
1192
1193 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1194 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1195
1196 if (!InBuffLength || !OutBuffLength)
1197 {
1198 Status = STATUS_INVALID_PARAMETER;
1199 break;
1200 }
1201
1202
1203
1204
1205
1207
1208
1209
1210
1212
1213 Irp->IoStatus.Information = OutBuffLength;
1214 Status = STATUS_SUCCESS;
1215
1216
1217
1218
1219 DoNotChangeInformation =
TRUE;
1220
1221 break;
1222
1224
1225
1226
1227
1229 {
1230 Status = STATUS_INVALID_PARAMETER;
1231 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1232 break;
1233 }
1234
1235 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1236 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1237
1238 if (!InBuffLength || !OutBuffLength)
1239 {
1240 Status = STATUS_INVALID_PARAMETER;
1241 break;
1242 }
1243
1244
1245
1246
1247
1249
1250
1251
1252
1254 {
1256 }
1258 {
1260 }
1261
1263 Status = STATUS_SUCCESS;
1264
1265
1266
1267
1268 DoNotChangeInformation =
TRUE;
1269
1270 break;
1271
1273
1274
1275
1276
1278 {
1279 Status = STATUS_INVALID_PARAMETER;
1280 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1281 break;
1282 }
1283
1284 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1285 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1286
1287 if (!InBuffLength || !OutBuffLength)
1288 {
1289 Status = STATUS_INVALID_PARAMETER;
1290 break;
1291 }
1292
1293
1294
1295
1296
1298
1299
1300
1301
1303 {
1305 DebuggerUsermodeProcessOrThreadQueryRequest,
1306 OutBuffLength);
1307 }
1309 {
1311 DebuggerUsermodeProcessOrThreadQueryRequest,
1312 OutBuffLength);
1313 }
1314
1315 Irp->IoStatus.Information = OutBuffLength;
1316 Status = STATUS_SUCCESS;
1317
1318
1319
1320
1321 DoNotChangeInformation =
TRUE;
1322
1323 break;
1324
1326
1327
1328
1329
1331 {
1332 Status = STATUS_INVALID_PARAMETER;
1333 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1334 break;
1335 }
1336
1337 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1338 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1339
1340 if (!InBuffLength || !OutBuffLength)
1341 {
1342 Status = STATUS_INVALID_PARAMETER;
1343 break;
1344 }
1345
1346
1347
1348
1349
1351
1352
1353
1354
1356
1358 Status = STATUS_SUCCESS;
1359
1360
1361
1362
1363 DoNotChangeInformation =
TRUE;
1364
1365 break;
1366
1368
1369
1370
1371
1373 {
1374 Status = STATUS_INVALID_PARAMETER;
1375 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1376 break;
1377 }
1378
1379 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1380 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1381
1382 if (!InBuffLength || !OutBuffLength)
1383 {
1384 Status = STATUS_INVALID_PARAMETER;
1385 break;
1386 }
1387
1388
1389
1390
1391
1393
1394
1395
1396
1398
1400 Status = STATUS_SUCCESS;
1401
1402
1403
1404
1405 DoNotChangeInformation =
TRUE;
1406
1407 break;
1408
1410
1411
1412
1413
1415 {
1416 Status = STATUS_INVALID_PARAMETER;
1417 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1418 break;
1419 }
1420
1421 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1422 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1423
1424 if (!InBuffLength || !OutBuffLength)
1425 {
1426 Status = STATUS_INVALID_PARAMETER;
1427 break;
1428 }
1429
1430
1431
1432
1433
1435
1436
1437
1438
1440
1442 Status = STATUS_SUCCESS;
1443
1444
1445
1446
1447 DoNotChangeInformation =
TRUE;
1448
1449 break;
1450
1452
1453
1454
1455
1457 {
1458 Status = STATUS_INVALID_PARAMETER;
1459 LogError(
"Err, invalid parameter to IOCTL dispatcher");
1460 break;
1461 }
1462
1463 InBuffLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
1464 OutBuffLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
1465
1466 if (!InBuffLength)
1467 {
1468 Status = STATUS_INVALID_PARAMETER;
1469 break;
1470 }
1471
1473
1474
1475
1476
1477
1479
1481 Status = STATUS_SUCCESS;
1482
1483
1484
1485
1486 DoNotChangeInformation =
TRUE;
1487
1488 break;
1489
1490 default:
1492 Status = STATUS_NOT_IMPLEMENTED;
1493 break;
1494 }
1495 }
1496 else
1497 {
1498
1499
1500
1501 Status = STATUS_SUCCESS;
1502 }
1503
1504 if (Status != STATUS_PENDING)
1505 {
1506 Irp->IoStatus.Status = Status;
1507 if (!DoNotChangeInformation)
1508 {
1509 Irp->IoStatus.Information = 0;
1510 }
1511 IoCompleteRequest(Irp, IO_NO_INCREMENT);
1512 }
1513
1514 return Status;
1515}
BOOLEAN AttachingQueryDetailsOfActiveDebuggingThreadsAndProcesses(PVOID BufferToStoreDetails, UINT32 BufferSize)
Query details of active debugging threads.
Definition Attaching.c:1476
VOID AttachingTargetProcess(PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS Request)
Dispatch and perform attaching tasks.
Definition Attaching.c:1508
UCHAR BOOLEAN
Definition BasicTypes.h:39
#define NULL_ZERO
Definition BasicTypes.h:51
#define TRUE
Definition BasicTypes.h:55
char CHAR
Definition BasicTypes.h:31
unsigned long ULONG
Definition BasicTypes.h:37
BOOLEAN LogCallbackSendBuffer(_In_ UINT32 OperationCode, _In_reads_bytes_(BufferLength) PVOID Buffer, _In_ UINT32 BufferLength, _In_ BOOLEAN Priority)
routines callback for sending buffer
Definition Callback.c:123
BOOLEAN ConfigureInitializeExecTrapOnAllProcessors()
routines for initializing user-mode, kernel-mode exec trap
Definition Configuration.c:37
#define EnableInstantEventMechanism
Enable or disable the instant event mechanism.
Definition Configuration.h:75
#define OPERATION_HYPERVISOR_DRIVER_END_OF_IRPS
Definition Constants.h:382
#define MaximumSearchResults
maximum results that will be returned by !s* s* command
Definition Constants.h:514
struct _REGISTER_NOTIFY_BUFFER * PREGISTER_NOTIFY_BUFFER
#define SIZEOF_DEBUGGER_PAUSE_PACKET_RECEIVED
Definition DataTypes.h:170
struct _DEBUGGER_PAUSE_PACKET_RECEIVED * PDEBUGGER_PAUSE_PACKET_RECEIVED
@ EVENT_BASED
Definition DataTypes.h:256
@ IRP_BASED
Definition DataTypes.h:255
BOOLEAN DebuggerParseEvent(PDEBUGGER_GENERAL_EVENT_DETAIL EventDetails, PDEBUGGER_EVENT_AND_ACTION_RESULT ResultsToReturn, BOOLEAN InputFromVmxRoot)
Routine for parsing events.
Definition Debugger.c:3116
VOID DebuggerUninitialize()
Uninitialize Debugger Structures and Routines.
Definition Debugger.c:257
BOOLEAN DebuggerParseEventsModification(PDEBUGGER_MODIFY_EVENTS DebuggerEventModificationRequest, BOOLEAN InputFromVmxRoot, BOOLEAN PoolManagerAllocatedMemory)
Parse and validate requests to enable/disable/clear from the user-mode.
Definition Debugger.c:3671
BOOLEAN DebuggerParseAction(PDEBUGGER_GENERAL_ACTION ActionDetails, PDEBUGGER_EVENT_AND_ACTION_RESULT ResultsToReturn, BOOLEAN InputFromVmxRoot)
Routine for validating and parsing actions that are coming from the user-mode.
Definition Debugger.c:3260
BOOLEAN DebuggerCommandBringPagein(PDEBUGGER_PAGE_IN_REQUEST PageinRequest)
routines for the .pagein command
Definition DebuggerCommands.c:1475
NTSTATUS DebuggerCommandPreactivateFunctionality(PDEBUGGER_PREACTIVATE_COMMAND PreactivateRequest)
Preactivate a special functionality.
Definition DebuggerCommands.c:1443
NTSTATUS DebuggerCommandReservePreallocatedPools(PDEBUGGER_PREALLOC_COMMAND PreallocRequest)
Reserve and allocate pre-allocated buffers.
Definition DebuggerCommands.c:1319
NTSTATUS DebuggerReadOrWriteMsr(PDEBUGGER_READ_AND_WRITE_ON_MSR ReadOrWriteMsrRequest, UINT64 *UserBuffer, PSIZE_T ReturnSize)
Perform rdmsr, wrmsr commands.
Definition DebuggerCommands.c:288
NTSTATUS DebuggerCommandSignalExecutionState(PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL DebuggerFinishedExecutionRequest)
Perform the command finished signal.
Definition DebuggerCommands.c:1255
NTSTATUS DebuggerCommandSearchMemory(PDEBUGGER_SEARCH_MEMORY SearchMemRequest)
Start searching memory.
Definition DebuggerCommands.c:1134
BOOLEAN DebuggerCommandReadMemory(PDEBUGGER_READ_MEMORY ReadMemRequest, PVOID UserBuffer, PSIZE_T ReturnSize)
Read memory for different commands.
Definition DebuggerCommands.c:25
NTSTATUS DebuggerCommandSendMessage(PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER DebuggerSendUsermodeMessageRequest)
Send the user-mode buffer to debugger.
Definition DebuggerCommands.c:1274
NTSTATUS DebuggerCommandSendGeneralBufferToDebugger(PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER DebuggeeBufferRequest)
Send general buffers from the debuggee to the debugger.
Definition DebuggerCommands.c:1296
NTSTATUS DebuggerCommandFlush(PDEBUGGER_FLUSH_LOGGING_BUFFERS DebuggerFlushBuffersRequest)
Perform the flush requests to vmx-root and vmx non-root buffers.
Definition DebuggerCommands.c:1235
NTSTATUS DebuggerCommandEditMemory(PDEBUGGER_EDIT_MEMORY EditMemRequest)
Edit physical and virtual memory.
Definition DebuggerCommands.c:441
#define DEBUGGER_ERROR_UNABLE_TO_HIDE_OR_UNHIDE_DEBUGGER
error, unable to hide the debugger and enter to transparent-mode
Definition ErrorCodes.h:87
#define DEBUGGER_ERROR_DEBUGGER_ALREADY_UHIDE
error, the debugger is already in transparent-mode
Definition ErrorCodes.h:93
#define DEBUGGER_OPERATION_WAS_SUCCESSFUL
General value to indicate that the operation or request was successful.
Definition ErrorCodes.h:23
VOID VmFuncUninitVmm()
Uninitialize Terminate Vmx on all logical cores.
Definition Export.c:541
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
#define LogError(format,...)
Log in the case of error.
Definition HyperDbgHyperLogIntrinsics.h:113
#define IOCTL_SEND_GENERAL_BUFFER_FROM_DEBUGGEE_TO_DEBUGGER
ioctl, send general buffer from debuggee to debugger
Definition Ioctls.h:205
#define IOCTL_DEBUGGER_EDIT_MEMORY
ioctl, request to edit virtual and physical memory
Definition Ioctls.h:134
#define IOCTL_DEBUGGER_READ_OR_WRITE_MSR
ioctl, request to read or write on a special MSR
Definition Ioctls.h:92
#define IOCTL_DEBUGGER_READ_MEMORY
ioctl, request to read memory
Definition Ioctls.h:85
#define IOCTL_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS
ioctl, for !va2pa and !pa2va commands
Definition Ioctls.h:127
#define IOCTL_QUERY_CURRENT_THREAD
ioctl, query the current thread details
Definition Ioctls.h:268
#define IOCTL_PREACTIVATE_FUNCTIONALITY
ioctl, to preactivate a functionality
Definition Ioctls.h:289
#define IOCTL_DEBUGGER_FLUSH_LOGGING_BUFFERS
ioctl, flush the kernel buffers
Definition Ioctls.h:155
#define IOCTL_SEND_USERMODE_MESSAGES_TO_DEBUGGER
ioctl, send user-mode messages to the debugger
Definition Ioctls.h:198
#define IOCTL_RETURN_IRP_PENDING_PACKETS_AND_DISALLOW_IOCTL
ioctl, irp pending mechanism for reading from message tracing buffers
Definition Ioctls.h:71
#define IOCTL_REQUEST_REV_MACHINE_SERVICE
ioctl, request service from the reversing machine
Definition Ioctls.h:275
#define IOCTL_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS
ioctl, attach or detach user-mode processes
Definition Ioctls.h:162
#define IOCTL_PREPARE_DEBUGGEE
ioctl, prepare debuggee
Definition Ioctls.h:177
#define IOCTL_DEBUGGER_SEARCH_MEMORY
ioctl, request to search virtual and physical memory
Definition Ioctls.h:141
#define IOCTL_QUERY_CURRENT_PROCESS
ioctl, query the current process details
Definition Ioctls.h:261
#define IOCTL_DEBUGGER_REGISTER_EVENT
ioctl, register an event
Definition Ioctls.h:106
#define IOCTL_TERMINATE_VMX
ioctl, to terminate vmx and exit form debugger
Definition Ioctls.h:78
#define IOCTL_PERFROM_KERNEL_SIDE_TESTS
ioctl, to perform kernel-side tests
Definition Ioctls.h:212
#define IOCTL_SEND_USER_DEBUGGER_COMMANDS
ioctl, to send user debugger commands
Definition Ioctls.h:226
#define IOCTL_DEBUGGER_BRING_PAGES_IN
ioctl, request to bring pages in
Definition Ioctls.h:282
#define IOCTL_PAUSE_PACKET_RECEIVED
ioctl, pause and halt the system
Definition Ioctls.h:184
#define IOCTL_SEND_SIGNAL_EXECUTION_IN_DEBUGGEE_FINISHED
ioctl, send a signal that execution of command finished
Definition Ioctls.h:191
#define IOCTL_GET_LIST_OF_THREADS_AND_PROCESSES
ioctl, to get list threads/processes
Definition Ioctls.h:254
#define IOCTL_DEBUGGER_HIDE_AND_UNHIDE_TO_TRANSPARENT_THE_DEBUGGER
ioctl, request to enable or disable transparent-mode
Definition Ioctls.h:120
#define IOCTL_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS
ioctl, request to read page table entries
Definition Ioctls.h:99
#define IOCTL_GET_DETAIL_OF_ACTIVE_THREADS_AND_PROCESSES
ioctl, to get active threads/processes that are debugging
Definition Ioctls.h:233
#define IOCTL_REGISTER_EVENT
ioctl, register a new event
Definition Ioctls.h:64
#define IOCTL_QUERY_COUNT_OF_ACTIVE_PROCESSES_OR_THREADS
ioctl, query count of active threads or processes
Definition Ioctls.h:247
#define IOCTL_DEBUGGER_ADD_ACTION_TO_EVENT
ioctl, add action to event
Definition Ioctls.h:113
#define IOCTL_DEBUGGER_MODIFY_EVENTS
ioctl, request to modify an event (enable/disable/clear)
Definition Ioctls.h:148
#define IOCTL_RESERVE_PRE_ALLOCATED_POOLS
ioctl, to reserve pre-allocated pools
Definition Ioctls.h:219
#define IOCTL_GET_USER_MODE_MODULE_DETAILS
ioctl, to get user mode modules details
Definition Ioctls.h:240
VOID KdHaltSystem(PDEBUGGER_PAUSE_PACKET_RECEIVED PausePacket)
Halt the system.
Definition Kd.c:3376
VOID TestKernelPerformTests(PDEBUGGER_PERFORM_KERNEL_TESTS KernelTestRequest)
Perform the kernel-side tests.
Definition KernelTests.c:22
BOOLEAN LogRegisterEventBasedNotification(PVOID TargetIrp)
Create an event-based usermode notifying mechanism.
Definition Logging.c:1583
BOOLEAN LogRegisterIrpBasedNotification(PVOID TargetIrp, LONG *Status)
Register a new IRP Pending thread which listens for new buffers.
Definition Logging.c:1464
BOOLEAN PoolManagerCheckAndPerformAllocationAndDeallocation()
This function performs allocations from VMX non-root based on g_RequestNewAllocation.
Definition PoolManager.c:302
BOOLEAN ProcessQueryList(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest, PVOID AddressToSaveDetail, UINT32 BufferSize)
Query process details (list)
Definition Process.c:649
BOOLEAN ProcessQueryCount(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest)
Query process details (count)
Definition Process.c:616
BOOLEAN ProcessQueryDetails(PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET GetInformationProcessRequest)
Query process details.
Definition Process.c:675
@ DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_THREAD_COUNT
Definition RequestStructures.h:658
@ DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_PROCESS_LIST
Definition RequestStructures.h:659
@ DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_THREAD_LIST
Definition RequestStructures.h:660
@ DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_QUERY_PROCESS_COUNT
Definition RequestStructures.h:657
#define SIZEOF_DEBUGGER_PERFORM_KERNEL_TESTS
Definition RequestStructures.h:343
struct _DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS * PDEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS
#define SIZEOF_DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER
Definition RequestStructures.h:400
struct _DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS * PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS
#define SIZEOF_DEBUGGER_READ_PAGE_TABLE_ENTRIES_DETAILS
Definition RequestStructures.h:14
#define SIZEOF_DEBUGGER_READ_AND_WRITE_ON_MSR
Definition RequestStructures.h:422
#define SIZEOF_REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST
Definition RequestStructures.h:107
#define SIZEOF_DEBUGGER_PREALLOC_COMMAND
Definition RequestStructures.h:166
struct _DEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER * PDEBUGGER_SEND_USERMODE_MESSAGES_TO_DEBUGGER
struct _DEBUGGER_SEARCH_MEMORY * PDEBUGGER_SEARCH_MEMORY
#define SIZEOF_DEBUGGER_PAGE_IN_REQUEST
Definition RequestStructures.h:65
#define SIZEOF_DEBUGGER_VA2PA_AND_PA2VA_COMMANDS
Definition RequestStructures.h:46
struct _DEBUGGER_PERFORM_KERNEL_TESTS * PDEBUGGER_PERFORM_KERNEL_TESTS
#define SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET
Debugger size of DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET.
Definition RequestStructures.h:980
struct _DEBUGGER_UD_COMMAND_PACKET DEBUGGER_UD_COMMAND_PACKET
The structure of command packet in uHyperDbg.
struct _DEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET * PDEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET
struct _DEBUGGER_PREACTIVATE_COMMAND * PDEBUGGER_PREACTIVATE_COMMAND
#define SIZEOF_DEBUGGER_FLUSH_LOGGING_BUFFERS
Definition RequestStructures.h:286
struct _DEBUGGER_READ_AND_WRITE_ON_MSR * PDEBUGGER_READ_AND_WRITE_ON_MSR
struct _DEBUGGER_UD_COMMAND_PACKET * PDEBUGGER_UD_COMMAND_PACKET
struct _DEBUGGER_PREALLOC_COMMAND * PDEBUGGER_PREALLOC_COMMAND
struct _DEBUGGER_PAGE_IN_REQUEST * PDEBUGGER_PAGE_IN_REQUEST
struct _DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE * PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE
#define SIZEOF_DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS
Definition RequestStructures.h:607
struct _DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL * PDEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL
#define SIZEOF_DEBUGGER_PREPARE_DEBUGGEE
Definition RequestStructures.h:575
#define SIZEOF_DEBUGGER_EDIT_MEMORY
Definition RequestStructures.h:454
struct _REVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST * PREVERSING_MACHINE_RECONSTRUCT_MEMORY_REQUEST
struct _DEBUGGER_PREPARE_DEBUGGEE * PDEBUGGER_PREPARE_DEBUGGEE
@ DEBUGGER_MSR_WRITE
Definition RequestStructures.h:432
struct _DEBUGGER_EDIT_MEMORY * PDEBUGGER_EDIT_MEMORY
struct _DEBUGGER_READ_MEMORY * PDEBUGGER_READ_MEMORY
#define SIZEOF_DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET
Debugger size of DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET.
Definition RequestStructures.h:942
#define SIZEOF_DEBUGGER_SEARCH_MEMORY
Definition RequestStructures.h:496
#define SIZEOF_DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER
Definition RequestStructures.h:376
#define SIZEOF_DEBUGGER_SEND_COMMAND_EXECUTION_FINISHED_SIGNAL
Definition RequestStructures.h:359
#define SIZEOF_DEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE
Definition RequestStructures.h:541
struct _DEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET * PDEBUGGEE_DETAILS_AND_SWITCH_PROCESS_PACKET
struct _DEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER * PDEBUGGEE_SEND_GENERAL_PACKET_FROM_DEBUGGEE_TO_DEBUGGER
#define SIZEOF_DEBUGGER_READ_MEMORY
Definition RequestStructures.h:211
#define SIZEOF_DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS
Definition RequestStructures.h:648
struct _DEBUGGER_FLUSH_LOGGING_BUFFERS * PDEBUGGER_FLUSH_LOGGING_BUFFERS
#define SIZEOF_DEBUGGER_PREACTIVATE_COMMAND
Definition RequestStructures.h:194
struct _DEBUGGER_VA2PA_AND_PA2VA_COMMANDS * PDEBUGGER_VA2PA_AND_PA2VA_COMMANDS
struct _DEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS * PDEBUGGER_ATTACH_DETACH_USER_MODE_PROCESS
NTSTATUS SerialConnectionPrepare(PDEBUGGER_PREPARE_DEBUGGEE DebuggeeRequest)
Perform tasks relating to stepping (step-in & step-out) requests.
Definition SerialConnection.c:341
struct _USERMODE_LOADED_MODULE_DETAILS * PUSERMODE_LOADED_MODULE_DETAILS
BOOLEAN ThreadQueryDetails(PDEBUGGEE_DETAILS_AND_SWITCH_THREAD_PACKET GetInformationThreadRequest)
Query thread details.
Definition Thread.c:695
BOOLEAN ThreadQueryList(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest, PVOID AddressToSaveDetail, UINT32 BufferSize)
Query thread details (list)
Definition Thread.c:669
BOOLEAN ThreadQueryCount(PDEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS DebuggerUsermodeProcessOrThreadQueryRequest)
Query thread details (count)
Definition Thread.c:636
NTSTATUS TransparentHideDebugger(PDEBUGGER_HIDE_AND_TRANSPARENT_DEBUGGER_MODE Measurements)
Hide debugger on transparent-mode (activate transparent-mode)
Definition Transparency.c:356
NTSTATUS TransparentUnhideDebugger()
Deactivate transparent-mode.
Definition Transparency.c:425
BOOLEAN UdDispatchUsermodeCommands(PDEBUGGER_UD_COMMAND_PACKET ActionRequest)
Dispatch the user-mode commands.
Definition Ud.c:337
BOOLEAN UserAccessGetLoadedModules(PUSERMODE_LOADED_MODULE_DETAILS ProcessLoadedModuleRequest, UINT32 BufferSize)
Get details about loaded modules.
Definition UserAccess.c:779
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
request for send general packets from debuggee to debugger
Definition RequestStructures.h:384
UINT32 LengthOfBuffer
Definition RequestStructures.h:386
request for attaching user-mode process
Definition RequestStructures.h:631
request for edit virtual and physical memory
Definition RequestStructures.h:482
UINT32 CountOf64Chunks
Definition RequestStructures.h:488
Status of register buffers.
Definition Events.h:423
request for flushing buffers
Definition RequestStructures.h:294
Each event can have multiple actions.
Definition Events.h:406
Each command is like the following struct, it also used for tracing works in user mode and sending it...
Definition Events.h:350
request for enable or disable transparent-mode
Definition RequestStructures.h:549
UINT64 KernelStatus
Definition RequestStructures.h:565
BOOLEAN IsHide
Definition RequestStructures.h:550
UINT32 LengthOfProcessName
Definition RequestStructures.h:562
BOOLEAN TrueIfProcessIdAndFalseIfProcessName
Definition RequestStructures.h:560
request for modifying events (enable/disable/clear)
Definition Events.h:242
requests for the '.pagein' command
Definition RequestStructures.h:73
request to pause and halt the system
Definition DataTypes.h:178
request performing kernel tests
Definition RequestStructures.h:351
requests for the 'preactivate' command
Definition RequestStructures.h:202
requests for the 'prealloc' command
Definition RequestStructures.h:174
request to make this computer to a debuggee
Definition RequestStructures.h:582
request for query count of active processes and threads
Definition RequestStructures.h:742
DEBUGGER_QUERY_ACTIVE_PROCESSES_OR_THREADS_TYPES QueryType
Definition RequestStructures.h:745
request to read or write on MSRs
Definition RequestStructures.h:440
DEBUGGER_MSR_ACTION_TYPE ActionType
Definition RequestStructures.h:446
request for reading virtual and physical memory
Definition RequestStructures.h:266
request for !pte command
Definition RequestStructures.h:22
request for searching memory
Definition RequestStructures.h:527
UINT32 CountOf64Chunks
Definition RequestStructures.h:533
request for send a signal that command execution finished
Definition RequestStructures.h:367
request for send a user-mode message to debugger
Definition RequestStructures.h:408
UINT32 Length
Definition RequestStructures.h:410
The structure of command packet in uHyperDbg.
Definition RequestStructures.h:893
requests for !va2pa and !pa2va commands
Definition RequestStructures.h:54
Used to register event for transferring buffer between user-to-kernel.
Definition DataTypes.h:279
NOTIFY_TYPE Type
Definition DataTypes.h:280
requests for !rev command
Definition RequestStructures.h:115