遍历注册表回调函数(仿PCHunter CmpBack)

typedef struct _CAPTURE_REGISTRY_MANAGER

{

PDEVICE_OBJECT deviceObject;

BOOLEAN bReady;

LARGE_INTEGER  registryCallbackCookie;

LIST_ENTRY lQueuedRegistryEvents;

KTIMER connectionCheckerTimer;

KDPC connectionCheckerFunction;

KSPIN_LOCK lQueuedRegistryEventsSpinLock;

ULONG lastContactTime;

} CAPTURE_REGISTRY_MANAGER, *PCAPTURE_REGISTRY_MANAGER;

系统注册表回调函数注册流程

调用CmRegisterCallback

第一个参数就是 回调函数地址

第二个参数是 PCAPTURE_REGISTRY_MANAGER 指针

CmRegisterCallback内部会操作两个全局变量

CmpCallBackCount 注册表回调函数数组总数

CallbackListHead 注册表回调函数数组头部(每个元素是 LIST_ENTRY 对象 ->Blink 指向ExAllocatePoolWithTag申请的一个地址 为了方便这里简称Ha)

Ha+0x18 = 上面说的 CmRegisterCallback 函数的第二个参数

Ha+0x1C = 上面说的 CmRegisterCallback 函数的第一个参数

这样就可以依靠 上面的两个全局变量 遍历出来 注册表回调函数

代码(只放出重要部分)

vntoskrnlBaseAddr  内核模块基地址(ntoskn...模块)

//回调函数数组

ULONG vCmpCallBackCount = *vPCmpCallBackCount;

PLIST_ENTRY vPCallbackListHead = (PLIST_ENTRY)(vntoskrnlBaseAddr + 0x167F70);

while (vCmpCallBackCount)

{

KdPrint(("vPCallbackListHead->Flink = 0x%08X\r\n", vPCallbackListHead->Flink));

ULONG vExAllocateAddr = (ULONG)vPCallbackListHead->Flink;

KdPrint(("CaptrueRegisterManager = 0x%08X\r\n", *(PULONG)(vExAllocateAddr + 0x18)));

KdPrint(("RegistryCallbackFunction = 0x%08X\r\n", *(PULONG)(vExAllocateAddr + 0x1C)));

KdPrint(("\r\n--------------------------------------------------------------\r\n\r\n"));

vPCallbackListHead++;

vCmpCallBackCount--;

}

jpg 改 rar

遍历注册表回调函数(仿PCHunter CmpBack)的更多相关文章

  1. 驱动开发:内核枚举Registry注册表回调

    在笔者上一篇文章<驱动开发:内核枚举LoadImage映像回调>中LyShark教大家实现了枚举系统回调中的LoadImage通知消息,本章将实现对Registry注册表通知消息的枚举,与 ...

  2. 驱动开发:内核监控Register注册表回调

    在笔者前一篇文章<驱动开发:内核枚举Registry注册表回调>中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监 ...

  3. Win64 驱动内核编程-32.枚举与删除注册表回调

    枚举与删除注册表回调 注册表回调是一个监控注册表读写的回调,它的效果非常明显,一个回调能实现在SSDT 上 HOOK 十几个 API 的效果.部分游戏保护还会在注册表回调上做功夫,监控 service ...

  4. c#遍历注册表

    --来自 https://blog.csdn.net/wenchangren/article/details/751863using System; using Microsoft.Win32; us ...

  5. Win64 驱动内核编程-15.回调监控注册表

    回调监控注册表 在 WIN32 平台上,监控注册表的手段通常是 SSDT HOOK.不过用 SSDT HOOK 的方式监控注册表实在是太麻烦了,要 HOOK 一大堆函数,还要处理一些 NT6 系统有而 ...

  6. OpenGL的GLUT注册回调函数[转]

    OpenGL的注册回调函数 void glutDisplayFunc(void (*func)(void) ); 为当前窗口设置显示回调函数 void glutOverlayDisplayFunc(v ...

  7. 计算机基础,Python - 回调函数,使用装饰器注册回调函数

    1. 参考: https://en.wikipedia.org/wiki/Callback_(computer_programming) https://developer.mozilla.org/e ...

  8. jQuery ajax() 参数,回调函数,数据类型,发送数据到服务器,高级选项

    $.ajax({ options:/*类型:Object;  可选.AJAX 请求设置.所有选项都是可选的.*/ async:/*类型:Boolean; 默认值: true.默认设置下,所有请求均为异 ...

  9. 利用模块加载回调函数修改PE导入表实现注入

    最近整理PE文件相关代码的时候,想到如果能在PE刚刚读进内存的时候再去修改内存PE镜像,那不是比直接对PE文件进行操作隐秘多了么? PE文件在运行时会根据导入表来进行dll库的"动态链接&q ...

随机推荐

  1. 【转】ArrayList其实就那么一回事儿之源码浅析

    转自:http://www.cnblogs.com/dongying/p/4013271.html?utm_source=tuicool&utm_medium=referral ArrayLi ...

  2. 查看Android应用包名package和入口activity名称

    使用android自动化测试工具启动应用时,需要填写被测程序的包名和启动的Activity,以下有两种查看应用包名package和入口activity名称的方法: 方法一:使用aapt    //aa ...

  3. Greedy:Cow Acrobats(POJ 3045)

    牛杂技团 题目大意:一群牛想逃跑,他们想通过搭牛梯来通过,现在定义risk(注意可是负的)为当前牛上面的牛的总重量-当前牛的strength,问应该怎么排列才能使risk最小? 说实话这道题我一开始给 ...

  4. (转)JAVA AJAX教程第二章-JAVASCRIPT基础知识

    开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用 ...

  5. Javascript调用C#后台方法及JSon解析

    Javascript调用C#后台方法及JSon解析   如何使用Ajax 调用C# 后台方法. 本文目录 如何使用Ajax 调用C# 后台方法. 1.后台(.cs)测试方法 2.前台调用(javasc ...

  6. 页面上有两个元素id相同,js中如何取值

    页面上有两个table,id都是”cont2",现要在js中取到这两个table,改变样式. js实现: var tab2=document.all.cont2(1);var  tab=do ...

  7. jquery-validation-1.13.1 自定义验证正则

    /*** check Mobile***********************/ jQuery.validator.addMethod("isMobile", function( ...

  8. Javascript中最常用的55个经典技巧(转)

    1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <table border oncontextmenu ...

  9. Android笔记:去除标题栏

    1: 在oncreate方法中添加requestWindowFeature(Window.FEATURE_NO_TITLE); 必须在setContentView()之前执行. 2: 在Android ...

  10. C# webBrowser控件使用

    C# webBrowser控件使用心得 最近用到WebBrowser控件,遇到很多问题,也学习了不少新的东西.下面是我在C#下写的关于WebBrowser控件使用的代码. 1.WebBrowser常用 ...