一般都是通过ZwQueryObject获取的调试对象个数,来确定是否存在调试器附加到进程,
我遇到一个驱动,他没有通过这个函数,也直接利用这个方法反调试了
我想问一下是怎么做的?直接获取ObpKernelHandleTable么?我用windbg看了一下,有些东西不懂
lkd> dd ObpKernelHandleTable
80569cd8 e1001d68 00000000 00000000 00000000
80569ce8 00000000 00000000 00000000 00000000
80569cf8 00000000 00000000 00000000 00000000
80569d08 00000000 00000000 00000000 00000000
80569d18 00000000 00000000 00000000 00000000
80569d28 00000000 00000000 00000000 00000000
80569d38 00000000 00000000 00000000 00000000
80569d48 00000000 00000000 00000000 00000000
lkd> dd e1001d68
e1001d68 e1004000 00000000 00000004 00000000
e1001d78 00000000 00000000 00000000 e14053b4 这个是list_entry_head?
e1001d88 8056b948 00000000 00000000 00000000
e1001d98 00000700 000000c8 00000800 00000116
e1001da8 00000000 ff0875ff 0c12060a 6353624f
e1001db8 80569764 80569764 0000002f 3b3fed90
e1001dc8 80040001 00000058 00000068 00000000
e1001dd8 00000014 00440002 00000002 00140000
lkd> dd e14053b4
e14053b4 e13f8c84 e1001d84 00000000 00000000 这个是flink?blink?那接下来的数据是什么结构呢?还是_HANDLE_TABLE结构?但是结构明显对不上
e14053c4 00000000 00000058 00000000 00000800
e14053d4 00000013 00000000 00000000 0c06060a
e14053e4 656c5252 e10024e8 00000000 00000021
e14053f4 00000000 00000000 89bd68e0 00000201
e1405404 e13f397c e1002504 74616d72 0c060606
e1405414 656c5252 00100000 00000000 7fffffff
e1405424 00000000 00000000 89bce130 00000001
lkd> dd e13f8c84
e13f8c84 e1b316a4 e14053b4 00000000 00000000
e13f8c94 00000000 00000678 00000000 00000800
e13f8ca4 000001de 00000000 00000073 0001020a
e13f8cb4 7153624f 0c020201 6d4e624f 00490050
e13f8cc4 00450050 0c090202 70696d57 00000000
e13f8cd4 00530055 005c0042 004f0052 0054004f
e13f8ce4 0048005f 00420055 0034005c 00330026
e13f8cf4 00310062 00630033 00610063 00260039
lkd> dd e1b316a4
e1b316a4 e204ebdc e13f8c84 00000000 00000000
e1b316b4 00000000 00000550 00000000 00000800
e1b316c4 00000150 00000000 00000000 1c0c060a
e1b316d4 88ba5da0 0001000d 00000000 00000000
e1b316e4 00000000 e16ce698 00000000 00007f05
e1b316f4 0003c001 00000103 00080008 020500a8
e1b31704 020500a4 00000000 00000000 00000000
e1b31714 00000000 00000000 030500a6 00000020
lkd> dd e1001d84
e1001d84 e14053b4 8056b948 00000000 00000000
e1001d94 00000000 00000214 000000c8 00000800
e1001da4 00000117 00000000 ff0875ff 0c12060a
e1001db4 6353624f 80569764 80569764 00000031
e1001dc4 3b3fed90 80040001 00000058 00000068
e1001dd4 00000000 00000014 00440002 00000002
e1001de4 00140000 001f0fff 00000101 05000000
e1001df4 00000012 00180000 00120410 00000201
lkd> dt _HANDLE_TABLE
nt!_HANDLE_TABLE
+0x000 TableCode : Uint4B
+0x004 QuotaProcess : Ptr32 _EPROCESS
+0x008 UniqueProcessId : Ptr32 Void
+0x00c HandleTableLock : [4] _EX_PUSH_LOCK
+0x01c HandleTableList : _LIST_ENTRY
+0x024 HandleContentionEvent : _EX_PUSH_LOCK
+0x028 DebugInfo : Ptr32 _HANDLE_TRACE_DEBUG_INFO
+0x02c ExtraInfoPages : Int4B
+0x030 FirstFree : Uint4B
+0x034 LastFree : Uint4B
+0x038 NextHandleNeedingPool : Uint4B
+0x03c HandleCount : Int4B
+0x040 Flags : Uint4B
+0x040 StrictFIFO : Pos 0, 1 Bit
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课