遍历注册表回调函数(仿PCHunter CmpBack) typedef struct _CAPTURE_REGISTRY_MANAGER { PDEVICE_OBJECT deviceObject; BOOLEAN bReady; LARGE_INTEGER  registryCallbackCookie; LIST_ENTRY lQueuedRegistryEvents; KTIMER connectionCheckerTimer; KDPC connectionCheckerFunctio…
在笔者上一篇文章<驱动开发:内核枚举LoadImage映像回调>中LyShark教大家实现了枚举系统回调中的LoadImage通知消息,本章将实现对Registry注册表通知消息的枚举,与LoadImage消息不同Registry消息不需要解密只要找到CallbackListHead消息回调链表头并解析为_CM_NOTIFY_ENTRY结构即可实现枚举. 我们来看一款闭源ARK工具是如何实现的: 注册表系统回调的枚举需要通过特征码搜索来实现,首先我们可以定位到uf CmUnRegisterCa…
在笔者前一篇文章<驱动开发:内核枚举Registry注册表回调>中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监控函数,通过这两个函数可以在不劫持内核API的前提下实现对注册表增加,删除,创建等事件的有效监控,注册表监视通常会通过CmRegisterCallback创建监控事件并传入自己的回调函数,与该创建对应的是CmUnRegisterCallback当注册表监控结束后可用于注销回调. CmRegisterCallb…
枚举与删除注册表回调 注册表回调是一个监控注册表读写的回调,它的效果非常明显,一个回调能实现在SSDT 上 HOOK 十几个 API 的效果.部分游戏保护还会在注册表回调上做功夫,监控 service 键的子键,实现双层拦截驱动加载(在映像回调那里还有一层).而在卡巴斯基等 HIPS 类软件里,则用来监控自启动等键值. 注册表回调在 XP 系统上貌似是一个数组,但是从 WINDOWS 2003 开始,就变成了一个链表.这个链表的头称为 CallbackListHead,可在 CmUnRegist…
--来自 https://blog.csdn.net/wenchangren/article/details/751863using System; using Microsoft.Win32; using System.Diagnostics; namespace IVR {     /// <summary>     /// Class1 的摘要说明.     /// </summary>     class Class1 {         /// <summary&g…
回调监控注册表 在 WIN32 平台上,监控注册表的手段通常是 SSDT HOOK.不过用 SSDT HOOK 的方式监控注册表实在是太麻烦了,要 HOOK 一大堆函数,还要处理一些 NT6 系统有而 NT5 系统没有的函数.下面我就来介绍一种完胜 SSDT HOOK 监控注册表的方法,效果跟 SSDT HOOK 一样好.这个方法就是使用微软推荐的注册表监控函数:CmRegisterCallbak.此函数其实在 XP 系统上就有了,不过那时功能不完善,只能简单的禁止或允许,无法获得完整的注册表修…
OpenGL的注册回调函数 void glutDisplayFunc(void (*func)(void) ); 为当前窗口设置显示回调函数 void glutOverlayDisplayFunc(void (*func)(void) ); 注册当前窗口的重叠层的显示回调函数 void glutReshapeFunc(void (*Func)(int width, int height) ); 指定当窗口的大小改变时调用的函数 void glutKeyboardFunc(void (*func)…
1. 参考: https://en.wikipedia.org/wiki/Callback_(computer_programming) https://developer.mozilla.org/en-US/docs/Glossary/Callback_function https://stackoverflow.com/questions/824234/what-is-a-callback-function https://www.zhihu.com/question/19801131/an…
$.ajax({ options:/*类型:Object;  可选.AJAX 请求设置.所有选项都是可选的.*/ async:/*类型:Boolean; 默认值: true.默认设置下,所有请求均为异步请求.如果需要发送同步请求,请将此选项设置为 false. 注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行.*/ beforeSend(xhr):/*类型:Function; 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头. XMLHtt…
最近整理PE文件相关代码的时候,想到如果能在PE刚刚读进内存的时候再去修改内存PE镜像,那不是比直接对PE文件进行操作隐秘多了么? PE文件在运行时会根据导入表来进行dll库的"动态链接",那么如果我们修改PE导入表结构,就可以实现对我们自己动态库的导入,从而实现注入. 那么问题来了,选择一个合适的时机显得很重要,网上搜索了一下,大部分都是直接在文件上进行修改,有位同学说用LoadImageNotifyRoutine可以来实现. 每一个模块加载前都能触发SetLoadImageNoti…
原文连接:https://forum.90sec.org/forum.php?mod=viewthread&tid=8410 作者:Agile 用过OUTLOOK的人都知道,OUTLOOK的密码会以二进制的方式保存在注册表里,而我们只要找到注册表的值,是可以直接解密成铭文的. 这几天一直在搞一台个人机,这台机器关系人物是这样的. A集团. B集团. 我已经控制了B集团,但是B集团里有人还在A集团里干事,我比较喜欢A集团,所以得把B集团的远程访问内部的账户密码难道,其中就包括啦 OUTLOOK的密…
2014-04-08  16:25:50   void glutDisplayFunc(void (*func)(void)); 注册当前窗口的显示回调函数 参数: func:形为void func()的函数,完成具体的绘制操作 这个函数告诉GLUT当窗口内容必须被绘制时,那个函数将被调用.当窗口改变大小或者从被覆盖的状态 //*************************************************************************************…
原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中,因为与服务器通讯是一种比较昂贵的操作,因此比较复杂的业务逻辑往往都放在服务器端,前端 JavaScript 只需要少数几次 AJAX 请求就可拿到全部数据. 但是到了 webapp 风行的时代,前端业务逻辑越来越复杂,往往几个 AJAX 请求之间互有依赖,有些请求依赖前面请求的数据,有些请求需要并行…
VC++深入详解里面说得也挺好:回调函数的实现机制: 1)定义一个回调函数 2)“函数实现者”(回调函数所在的模块)在初始化的时候,将回调函数的函数指针注册给“调用者”. 3)当特定的事件或条件发生的时候,“调用者”使用函数指针调用“回调函数”对事件进行处理. 针对Windows的消息处理机制,窗口过程函数(回调函数)被调用的过程如下: 1)在设计窗口类的时候,将窗口过程函数的地址赋值给lpfnWndProc成员变量 2)调用RegisterClass(&wndclass)注册窗口类,那么系统也…
如果函数的参数是一个函数指针,我们可以通过这个函数指针传递一个函数的地址给另外一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数(Callback Function).回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应. 因为可以把调用者与被调用者(实现者)分开,所以调用者不关心谁是被调用者.它只需知道存在一个具有特定原型和限制条件的被调用函数.换句话讲,回调函数就是允许用户把需要调用的方法的指针作为参数传递给一个函…
转帖:利用Delphi监视注册表的变化 2009-12-23 11:53:51 分类: 利用Delphi监视注册表的变化       我们在编写软件的时候,常常需要把一些信息保存到系统的注册表中.如果用户更改了注册表的信息,我们如何及时知道,并做相应的处理呢?通过研究,我们发现 在Win98以上操作系统中,微软在SDK函数库中增加了RegNotifyChangeKeyValue函数,用于监视注册表特定键值的变化.下面我们 就怎样用Delphi编一个注册表监视器,做详细地探讨.   关于注册表监视…
  C# dll 事件执行 js 回调函数   前言: 由于js 远程请求  XMLHttpRequest() 不支持多线程,所以用C# 写了个dll 多线程远程抓住供js调用. 最初代码为: C#代码 /// <summary> /// 异步请求入口 /// </summary> /// <param name="url">传入http地址 注意加http</param> /// <param name="timeout…
Window 系统错误代码 ERROR_SUCCESS,本博客中一律使用 NO_ERROR 代替.虽然 ERROR_SUCCESS 与 NO_ERROR 是完全等价的,都代表成功,但是后者却和其他错误代码一样,使用 ERROR 前缀,容易让人误认为是错误代码.而 NO_ERROR 意义很明显,就是无错误.还有另外一个宏 NOERROR 也表示成功,但是使用较少.Windows 系统错误代码的数据类型,其类型微软并没有具体说明.来自 advapi32.dll 中的注册表操作函数多使用 LONG 作…
什么是回调函数(callback)    模块A有一个函数foo,他向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应. 那么我们就把foo称为回调函数.   例子:      回调函数是个很有用,也很重要的概念.当发生某种事件时,系统或其他函数将会自动调用您定义的一段函数.回调函数在windows编程使用的场合很多, 比如Hook回调函数:MouseProc,GetMsgProc连同EnumW…
void glutDisplayFunc(void (*func)(void)); 注册当前窗口的显示回调函数 参数: func:形为void func()的函数,完成具体的绘制操作 这个函数告诉GLUT当窗口内容必须被绘制时,那个函数将被调用.当窗口改变大小或者从被覆盖的状态 //******************************************************************************************* void glutReshape…
原文地址:http://blog.sina.com.cn/s/blog_6568e7880100p77y.html 什么是回调函数(callback)    模块A有一个函数foo,他向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让A作出相应反应. 那么我们就把foo称为回调函数.   例子:      回调函数是个很有用,也很重要的概念.当发生某种事件时,系统或其他函数将会自动调用您定义的一段函数.回调函…
一.使用Lwip协议独立模式开发 最近在STM32F4上边移植了Lwip,Lwip是一个小型开源的TCP/IP协议栈,有无操作系统的支持都可以运行.我当前只测试了TCP Server功能,然后对TCP Server在Lwip协议栈的运行进行了分析.Lwip协议栈提供了有三种API,Raw API使用独立模式来开发,Netconn API.Socket API是使用实时操作系统(RTOS)进行多线程来开发,由于我是没有跑操作系统,所以使用独立模式的工作模型,这种工作模型的运行机制是基于轮询模式不停…
Delphi中定义了一个Tregistry类,通过使用这个类中封装的很多有关对注册表操作的方法和属性可以完成对注册表的操作.1. 在注册表中创建一个新的关键字Tregistry类中有一个CreateKey方法,使用该方法可以在注册表中创建一个新的关键字,该方法的原型声明为:function CreateKey(const Key: string) : Boolean;2. 向注册表关键字中写入相关的数据值在Tregistry类中提供了一系列的Write方法用来写入与当前关键字相关的数据值.常用方…
TLS回调函数以及反调试简单使用 0x00  TLS介绍 TLS(Thread Local Storage,线程局部储存),主要用于给线程独立的传值,由于线程不拥有进程的资源,所以几个同一进程的几个线程需要独立赋值时的需要通过TLS技术.每个线程创建时都会分配一个index所以,这个索引index是全局变量,线程根据index来获取其他线程传过来的返回值.TLS有一个特点,就是它通常在程序EP前就要运行,所以起始TLS才是个程序真正的开始.利用这一特点,可以用来进行的程序的反调试. 0x01 T…
转载自http://blog.csdn.net/yushiqiang1688/article/details/5209597 最近要做一个进程监控的程序,功能很简单,就是创建和退出进程的时候,能触发我们的事件. 首先的第一想法,是Hook ZwCreateProcess,结果调试的时候发现,很多创建进程的动作,并没有通过这个API执行,所以自然就是没办法监控进程的创建,于是回到本质,从创建进程的动作过程来分析,创建新的进程,其大致要经历以下步骤: (1)打开可执行文件,以FILE_EXECUTE…
执行ADO.NET事务包含四个步骤,接下来以Transaction对象为例介绍. (1)调用SQLConnection对象的BeginTransaction()方法,创建一个SQLTransaction对象,标志事务开始 (2)将创建的SQLTransaction对象分配给要执行的SqlCommand的Transaction属性. (3)调用相应的方法执行SQLCommand命令. (4)调用SQLTransaction的Commit()方法完成事务,或调用Rollback()方法终止事务. s…
实现原理: 通过将LUA中得回调函数存入LUA注册表中来保存LUA函数,然后在需要回调时从LUA注册表中取出LUA函数进行调用 下面是一些预备知识:(学习两个重要的函数) 原汁原味的英文解释的最透彻,翻译的话就会加入自己的理解 LUA_GLOBALSINDEX LUA_ENVIRONINDEX LUA_REGISTRYINDEX Lua provides a registry, a pre-defined table that can be used by any C code to store…
ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq-socket-monitor zmq_socket_monitor(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_socket_monitor - 注册一个监控回调函数 Synopsis int zmq_socket_monitor (void *socket, char * *addr, int events); Description zmq_socket_monitor() 函数会…
1.使用jquery 绑定事件,执行以下代码,提交单并使用回调函数 $form.serialize():serialize()序列号表单参数 var $form = $("#form"), action = $form.attr("action"); $form.on("submit",function(){ $.post(action,$form.serialize(),function(res){ //请求成功代码在这里 alert(&quo…
cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件.翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做.值得吐槽的是,这套流程在开发中几乎是不可避免的,而cocos2d-x竟然不把它作为一个公用接口暴露给开发者,而需要我自己动手,真是无奈. 下面以一个简单的消息分发类为例子,演示如何完成这一工作. MessageDispatcher.h class MessageDispather { public: st…