龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课 9 [已完结] C++零基础开发DXF内存脚本辅助教程 32课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 10170|回复: 0

逆WIN7X64内核调试之NTCreateDebugObject

[复制链接]

25

主题

1

回帖

37

积分

编程入门

Rank: 1

龙马币
108

  1. NTSTATUS __fastcall proxyNtCreateDebugObject(
  2.         OUT PHANDLE DebugObjectHandle,
  3.         IN ACCESS_MASK DesiredAccess,
  4.         IN POBJECT_ATTRIBUTES ObjectAttributes,
  5.         IN ULONG Flags )
  6. {
  7.         NTSTATUS status;
  8.         HANDLE Handle;
  9.         PDEBUG_OBJECT DebugObject;
  10.         KPROCESSOR_MODE        PreviousMode;

  11.         PreviousMode = ExGetPreviousMode();

  12.         //判断用户层句柄地址是否合法
  13.         try {
  14.                 if (PreviousMode != KernelMode) {
  15.                 ProbeForWriteHandle (DebugObjectHandle);
  16.                         *DebugObjectHandle = *DebugObjectHandle;
  17.                 }
  18.                 *DebugObjectHandle = NULL;

  19.         } except(ExSystemExceptionFilter()) {
  20.                 return GetExceptionCode();
  21.         }

  22.         if (Flags & ~DEBUG_KILL_ON_CLOSE) {
  23.                 return STATUS_INVALID_PARAMETER;
  24.         }

  25.         //创建调试对象
  26.         status = ObCreateObject(
  27.                 PreviousMode,
  28.                 NewDbgObject,        //调试对象类型,后面我们要换成我们新建的调试对象类型
  29.                 ObjectAttributes,
  30.                 PreviousMode,
  31.                 NULL,
  32.                 sizeof(DEBUG_OBJECT),
  33.                 0,
  34.                 0,
  35.                 (PVOID*)&DebugObject);

  36.         if (!NT_SUCCESS(status)) {
  37.                 return status;
  38.         }

  39.         //初始化调试对象
  40.         ExInitializeFastMutex(&DebugObject->Mutex);
  41.         InitializeListHead(&DebugObject->EventList);
  42.         KeInitializeEvent(&DebugObject->EventsPresent, NotificationEvent, FALSE);

  43.         if (Flags & DEBUG_KILL_ON_CLOSE) {
  44.                 DebugObject->Flags = DEBUG_OBJECT_KILL_ON_CLOSE;
  45.         }
  46.         else {
  47.                 DebugObject->Flags = 0;
  48.         }

  49.         //调试对象插入句柄表
  50.         status = ObInsertObject(
  51.                 DebugObject,
  52.                 NULL,
  53.                 DesiredAccess,
  54.                 0,
  55.                 NULL,
  56.                 &Handle);
  57.         if (!NT_SUCCESS(status)) {
  58.                 return status;
  59.         }

  60.         try {
  61.                 *DebugObjectHandle = Handle;
  62.         } except(ExSystemExceptionFilter()) {
  63.                 status = GetExceptionCode();
  64.         }

  65.         return status;
  66. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表