逆WIN7X64内核调试之NTCreateDebugObject
2015-09-28 17:01
495 查看
NTSTATUS __fastcall proxyNtCreateDebugObject( OUT PHANDLE DebugObjectHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG Flags ) { NTSTATUS status; HANDLE Handle; PDEBUG_OBJECT DebugObject; KPROCESSOR_MODE PreviousMode; PreviousMode = ExGetPreviousMode(); //判断用户层句柄地址是否合法 try { if (PreviousMode != KernelMode) { ProbeForWriteHandle (DebugObjectHandle); *DebugObjectHandle = *DebugObjectHandle; } *DebugObjectHandle = NULL; } except(ExSystemExceptionFilter()) { return GetExceptionCode(); } if (Flags & ~DEBUG_KILL_ON_CLOSE) { return STATUS_INVALID_PARAMETER; } //创建调试对象 status = ObCreateObject( PreviousMode, NewDbgObject, //调试对象类型,后面我们要换成我们新建的调试对象类型 ObjectAttributes, PreviousMode, NULL, sizeof(DEBUG_OBJECT), 0, 0, (PVOID*)&DebugObject); if (!NT_SUCCESS(status)) { return status; } //初始化调试对象 ExInitializeFastMutex(&DebugObject->Mutex); InitializeListHead(&DebugObject->EventList); KeInitializeEvent(&DebugObject->EventsPresent, NotificationEvent, FALSE); if (Flags & DEBUG_KILL_ON_CLOSE) { DebugObject->Flags = DEBUG_OBJECT_KILL_ON_CLOSE; } else { DebugObject->Flags = 0; } //调试对象插入句柄表 status = ObInsertObject( DebugObject, NULL, DesiredAccess, 0, NULL, &Handle); if (!NT_SUCCESS(status)) { return status; } try { *DebugObjectHandle = Handle; } except(ExSystemExceptionFilter()) { status = GetExceptionCode(); } return status; } |
相关文章推荐
- Objective-C 协议protocol的用法和理解
- Objective-C GCC Code Block Evaluation C Extension ({…})语法
- js object 、 json转换
- A guide to object cloning in java
- Objective-C中的instancetype和id区别
- ListView +ObjectDataSource+DataPager
- WaitForSingleObject函数的使用
- RemObjects SDK Source For Delphi XE7
- Objective-C---4---数组和值对象
- 【IOS 开发学习总结-OC-22】★objective-c——使用@try 处理异常
- python的class是否继承object区别
- OC - NSString/NSMutablestring
- Rich feature hierarchies for accurate object detection and semantic segmentation
- Objective-C中的Block
- OC-NSSTRING-NSMUTABLENSTRING
- Effective Objective-C(二)
- Effective Objective-C
- self在类方法中的使用
- 【IOS 开发学习总结-OC-21】★★★objective-c面向对象——委托/代理(delegate)
- Objective C中nil/Nil/NULL的区别