- 博客(61)
- 资源 (2)
- 收藏
- 关注
转载 sfilter代码:FsRtlRegisterFileSystemFilterCallbacks注册回调
注册FsFilter回调例程: FsFilter通知回调例程在下层文件系统执行某些操作之前或之后调用。如果需要获取更多有关于FsFilter回调例程相关信息,可参见FsRtlRegisterFileSystemFilterCallbacks例程 为了
2011-07-25 16:32:44
2201
原创 求助:关于IoCreateFileSpecifyDeviceObjectHint返回结果是STATUS_INVALID_DEVICE_OBJECT_PARAMETER的问题
想在sfcreate中用IoCreateFileSpecifyDeviceObjectHint打开一个文件来判断文件是否存在,如果打开同盘的文件可以实现(返回STATUS_OBJECT_NAME_NOT_FOUND
2011-07-25 12:45:53
2764
原创 NTSTATUS 返回结果对应的意思
MESSAGETABLE { 0, "STATUS_WAIT_0" 1, "STATUS_WAIT_1" 2, "STATUS_WAIT_2" 3, "STATUS_WAIT_3" 63, "STATUS_WAIT_63" 128
2011-07-25 12:08:11
6126
转载 Q34 Opening files during IRP_MJ_CREATE processing(转自osronline)
Q34 Opening files during IRP_MJ_CREATE processingWhile processing an IRP_MJ_CREATE a filter may need to open the file with different attribu
2011-07-25 09:52:13
1183
转载 DDK中对IRP_MJ_CREATE的描述
IRP_MJ_CREATE 参数:文件系统驱动或者文件过滤驱动调用IoGetCurrentIrpStackLocation来得到属于自己的站单元指针,下文中表示为IrpSp,(IRP表示为Irp。)下列信息是驱动程序在处理创建请求是可以使用的:DeviceObject 设备对象指
2011-07-24 21:39:55
5659
转载 NTSTATUS
Values are 32 bit and are laid out as follows. The following diagram is independent of endianness; that is, the diagram is shown in host byt
2011-07-19 18:47:17
827
转载 关于“cannot find a valid peer process to connect to”错误的解决方案
用VMware安装了LINUX后,在使用过程中出现了"cannot find a valid peer process to connect to"的错误提示。解决方法如下:1、用process explorer杀掉vmware-vmx.exe进程(如果有的话)2、清除虚拟机目录
2011-07-18 15:37:00
1085
转载 驱动开发 常用字符串操作函数
#ifndef __KFunction_String__ #define __KFunction_String__ #include /******************************************** 字符
2011-07-17 22:12:21
2562
转载 【原创】文件过滤驱动sfilter学习笔记
来源:http://bbs.pediy.com/showthread.php?t=133988ps:1.第一次写文章, 如果斑竹大大觉得小弟的文章对大家有点帮助, 那么, 你懂的, 嘿嘿. 2.文档中的代码可以在我的另一个帖子中下载到.http://bbs.pediy.co
2011-07-15 10:51:10
1925
转载 【原创】内核驱动文件重定向 加图加代码
作 者: defddr时 间: 2010-11-10,00:02:38链 接: http://bbs.pediy.com/showthread.php?t=124524最近学习了下内核驱动中的文件重定向。现在总结一下,希望对大家有用不知道在逆向论坛发表文件过滤驱动是一个错误?
2011-07-15 10:44:53
3459
转载 写宏定义:得到一个field在结构体(struct type)中的偏移量。
#define OFFSETOF(type, field) ((size_t)&(((type *)0)->field))(type *)0:把0地址当成type类型的指针。((type *)0)->field:对应域的变量。&((type *)0)->field:取该变量的地址
2011-07-14 19:54:24
1502
转载 FILE_OBJECT Structure
The FILE_OBJECT structure is used by the system to represent a file object. To user-mode protected subsystems, a file object represents an o
2011-07-14 10:49:31
2673
转载 WinDbg 10大调试命令
2008-06-12 11:03u: 反编译机器码在检查crash dump是否正确时,你已经用过了此命令,u命令有三种格式:1.u 从地址开始反编译8个机器码。2.u 反编译到之间的所有机器码。3.u 不提供任何参数时,从上次u命令停止的位置开始反编译。当然,反编译打段代
2011-07-14 09:17:36
631
转载 Windows 文件过滤驱动经验总结
Windows 文件过滤驱动经验总结本文转载自驱动开发网看了 ChuKuangRen 的第二版《文件过滤驱动开发教程》后,颇有感触。我想,交流都是建立在平等的基础上,在抱怨氛围和环境不好的同时应该先想一想自己究竟付出了多少?只知索取不愿付出的人也就不用抱怨了,要怪也只能怪自己。发
2011-07-13 19:58:15
525
转载 文件过滤系统驱动开发Filemon学习笔记
文件过滤系统驱动开发 Filemon 学习笔记 WINDOWS 文件过滤系统驱动开发,可用于硬盘还原,防病毒,文件安全防护,文件加密等诸多领域。而掌握核心层的理论及实践,对于成为一名优秀的开发人员不
2011-07-06 14:44:39
2351
转载 分页内存和非分页内存
分页内存是低中断级别的例程可以访问的。而非分页内存则是各个中断级别的例程都可以使用的。区别在于: 分页内存是虚拟内存,在物理上未必总是能得到。操作系统实现虚拟内存的主要方法就是通过分页机制。在Win32中,物理地址空间,二维虚拟地址空间和实际内存地址是三个不同
2011-07-06 10:43:43
572
转载 基于文件过滤驱动的文件重定向
NTSTATUSSfCreate ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp ){ PSFILTER_DEVICE_EXTENSION deviceExtension; PDEVICE_OBJECT attachedDevice; PIO_STACK_LOCATION irpSp = IoGetCurrentIrpStackLo
2011-06-28 15:35:00
1972
转载 文件重定向(采用文件过滤驱动实现)
原文:http://hi.baidu.com/tzpwater/blog/item/9bf66eb5196b1fe130add132.html/cmtid/65f21515aea03006c83d6d41Windows的I/O管理器提供了一个方便的方法来重定向一个文件对象。通常使用文件过滤驱动(在文件打开和文件创建的操作中)实现该方法。操作方法如下:1、在IRP_MJ_CREATE的分发函
2011-06-28 14:27:00
4974
转载 wdk tips (5): 再谈IO_STACK_LOCATION:IoMarkIrpPending
<br />IO_STACK_LOCATION很重要,再多聊一点也无妨。上上回我们谈了IO_STACK_LOCATION和那几个重要的函数,当然,我的目的不是扫盲,而是记下一些容易犯错的地方(实际上都是工作中碰到过的钉子)以方便自己回顾。我的记性是如此的差以至于几月不看就会忘记。如果你对这东西没概念,我建议你先多查查WDK文档。<br />上回我们聊了IoCopyCurrentIrpStackLocationToNext和IoSkipCurrentIrpStackLocation的差别(你看我的记性是不是很
2011-05-19 17:24:00
745
转载 wdk tips (2): IO_STACK_LOCATION
<br />来源 http://www.cnblogs.com/gussing/archive/2011/01/19/1939095.html<br />如前文所述,nt内核的驱动模型没有完全使用函数调用栈,而是自己山寨出来一个IO_STACK_LOCATION,里面保存了驱动调用序列。我们知道函数调用栈的push和pop都是编译器帮忙弄的,你甚至都可以在完全不了解内幕的前提下写代码,但是驱动开发不一样,调用序列要你自己去关心,何时入栈,何时出栈,栈内保留的什么内容,全部都要照顾好,否则BSOD就在前方不远
2011-05-19 17:11:00
726
转载 堆和栈的区别 (转贴)
<br />非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别<br />一、预备知识—程序的内存分配<br />一个由c/C++编译的程序占用的内存分为以下几个部分<br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。<br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。<br />3、全局区(静
2011-05-17 19:26:00
409
转载 驱动程序与应用程序之间的通信
驱动程序必须与应用程序进行通信,才能最终达到应用程序控制设备的目的,不然驱动有QIU用。<br />要通信就涉及到3个方面: <br />1.应用程序与驱动程序通信<br />2.驱动程序与应用程序通信<br />3.数据传输<br />下面分别讨论<br />1。应用程序与驱动程序通信<br />1-1 应用程序实现与驱动通信的过程: <br />---用CreateFile打开设备,然后用DeviceIoControl和驱动通信,包括从驱动读数据和写数据2种情况<br />也可以使用ReadFile从驱
2011-05-16 14:05:00
972
原创 自己研究课题的第一部分终于完成了
<br />今天,算是把我做的系统的第一部分完成了,有点欣慰。一个半月时间,自己从一点都不懂,到现在把功能实现,学到很多。<br />各种钩子函数,各种消息机制,自己算是入门了。<br />虽然下面还有很多工作,也会遇到很多难点,但是相信自己一定可以一一化解的。
2011-05-10 22:06:00
516
转载 char LPSTR LPCSTR TCHAR string
2009-02-25 15:52在使用C++开发程序的时候,处理文本比较麻烦。主要是由于历史的原因。C++对于字符的标注类型是char.但是没有定义char的大小。默认为一个字节,这样就不能处理Unicode了。所以C++标准将这个问题留给了开发者。<br />微软在使用C/C++的时候,为了处理这个问题,就定义了几个typedef。那就是CHAR、WCHAR、TCHAR、LPSTR和LPCSTR,其中:<br />CHAR 表示一个字节的字符<br />WCHAR 表示两个字节的字符<br />TCHAR
2011-05-10 11:10:00
888
转载 如何获得另一个应用程序窗口中的文本
问题: 我想从一个程序获得另一个程序编辑框的文本。用GetWindowText试了一下,它总返回NULL。请问大虾有没有办法来获得另一个程序窗口中的文本?如果能,如何实现? 另外,在VC知识库的论坛中,也有人热烈地讨论过此问题,并且自己找到的解决方案。解答: 噢,我喜欢讨论垒球问题;它们使我看起来很睿智。要想获得另一个进程窗口的文本,只需直接发送WM_GETTEXT。CWnd* pWnd = GetOtherAppWindow();TCHAR buf[512];pWnd->SendMes
2011-05-09 20:11:00
3894
转载 PostMessage和SendMessage,SendMessageTimeout区别
2010-12-19 11:49<br /> PostMessage只负责将消息放到消息队列中,不确定何时及是否处理<br /> SendMessage要等到受到消息处理的返回码(DWord类型)后才继续<br /> PostMessage执行后马上返回<br /> SendMessage必须等到消息被处理后才会返回。<br /> <br />SendMessage发送消息后会等对方处理完这个消息后才会继续<br />PostMessage则将消息发送出去后就会继续<
2011-05-09 20:05:00
3022
转载 理解 Win32 "OutputDebugString"
坚定的 Win32 开发人员可能对 OutputDebugString() API 函数比较熟悉,它可以使你的程序和调试器进行交谈。它要比创建日志文件容易,而且所有“真正的”调试器都能使用它。应用程序和调试器交谈的机制相当简单,而本文将揭示整件事情是如何工作的。<br />本文首先是由以下事件促使的,我们观察到 OutputDebugString() 在管理员和非管理员用户试图一起工作或游戏时并不总是能可靠地工作(至少在 Win2000 上)。我们怀疑是一些相关的内核对象的权限问题,此间涉略了相当多不得不写
2011-05-07 21:59:00
1038
1
原创 能在hook的回调函数里再hook吗?
自己在csdn问的一个问题,现在把它保存下来。http://topic.youkuaiyun.com/u/20110504/20/70829e9b-e3fe-4187-b29f-7792922e71ea.html一个exe程序,一个dll。我在exe里hook了WH_CBT,判断某一个窗口的创建。然后再回调函数里,一旦发现这个函数创建了,就想再hook鼠标的操作。都是hook全局的。部分代码if (lstrcmp(pCS->lpszName,"搜狗高速下载")==0){if (g_hmouse==NULL){Outpu
2011-05-07 21:00:00
962
原创 用WH_MOUSE做hook时,用调试语句OutputDebugString打印调试信息的时候出现的一个问题
直接上代码 //char buf1[50]={0}; //sprintf(buf1,"/nMouse Handle value is %d/n",g_hmouse); //OutputDebugString(buf1); if (nCode == HC_ACTION) { switch(wParam) { case WM_LBUTTONDOWN: OutputDebugString("/nMouse WM_LBUTTONDOWN /n"); break
2011-05-07 20:58:00
913
转载 chilewindowfrompoint函数解析
Windows API 函数。 函数原型:HWND ChildWindowFromPoint (HWND hWnd, LONG xPoint, LONG yPoint); 函数功能:返回父窗口中包含了指定点的第一个子窗口的句柄。 函数参数:hWnd 父窗口的句柄 xPoint 点的X坐标,以像素为单位 yPoint 点的Y坐标,以像素为单位 返回值:发现包含了指定点的第一个子窗口的句柄。如未发现任何窗口,则返回hWnd(父窗口的句柄)。如指定点位于父窗口外部,则返回零。
2011-05-06 14:10:00
638
转载 VC获取鼠标所在位置窗口
<br /><br /> <br />编号:A3GS_TV20100122003<br /> <br />描述:<br /> <br />本文以实例代码的形式讲述了在VC中下实现鼠标所在位置窗口的获取。<br /> <br />例子代码:<br /> <br />请下载本文附带例子代码。<br /> <br />技术实现:<br /> <br />头文件:<br /> <br />#include<winuser.h><br /> <br />技术说明:<br /> <br />实现本功能主要就是一个Win
2011-05-06 13:25:00
7591
转载 SendMessage、PostMessage原理(1)
发表于:2010-3-23 13:48:38 文章分类:其它 <br />标签:C++ 转载 <br />本文讲解SendMessage、PostMessage两个函数的实现原理,分为三个步骤进行讲解,分别适合初级、中级、高级程序员进行理解,三个步骤分别为:<br />1、SendMessage、PostMessage的运行机制。<br />2、SendMessage、PostMessage的运行内幕。<br />3、SendMessage、PostMessage的内部实现。<br />注
2011-05-04 11:12:00
670
原创 dll调试成功和成功拦截窗口创建
我这人比较懒,不喜欢在网上写自己的学习心得,不过这次还是准备写下。自己的想法是写这个文章算是对自己现在学的东西的一个copy,以后忘了就直接可以借来用。呵呵。真的要将近一个月了,就在今天,我终于拦截到了下载框的创建了。O(∩_∩)O哈哈~用的SetWindowsHookex函数,第一个参数给的是WH_CBT。在回调函数中,其中一个case就是判断HCBT_CREATEWND,从而获得创建窗口的信息。只要是窗口都能获得,那就不仅仅是下载窗口,而且下载窗口里面的各个元素,比如直接打开啊,下载啊, 取消啊这些按钮
2011-04-30 20:45:00
1522
转载 MFC WindowProc AfxWndProc lpfnWndProc
2010-04-29 11:08MFC的窗口类(如CWnd)与窗口过程。Windows是基于事件机制的,任何窗口都能发送和处理消息,每一个窗口都对应着自己的消息处理函数,即通常所说的窗口过程(WindowProc)。窗口过程通常是在WNDCLASSEX的lpfnWndProc变量中指定的,然后调用RegisterClassEx注册窗口类,lpfnWndProc要求是全局的或是类的静态成员,而MFC的窗口和类对象是一一对应的,在类中定义的窗口过程(CWnd::WindowProc)并非类的静态成员,那么窗口消
2011-04-29 19:08:00
2768
转载 [C++] CBT Hook Example
Got bored of doing revision and started on a HookLib, this is an example program where I was testing using a CBT Hook.header.h#include "windows.h"bool SetCBTHook(DWORD, HWND);void RemoveCBTHook(); Main.cpp#include "header.h"#define IDC_LIST 4000
2011-04-29 11:12:00
2061
转载 系统理解Win32 API和MFC(下)
<br />二、MFC的概念模型<br />前面我们研究了WIN32 API的“领域模型”,对它有较全面的认识。下面,对MFC概念模型的研究,我们把重点放在对app framework的研究上。<br />app framework中的message响应/传递机制是最重要的。而Hook机制和Message响应/传递机制是密切相关的,后者以前者为基础。<br /><br />1. Hook机制<br />也许有些程序员只知道hook机制可以编写很“牛”的应用,孰不知MFC本身也是依靠hook机制的
2011-04-28 15:36:00
507
转载 系统理解Win32 API和MFC(上)
Win32 API是微软的操作系统Windows提供给开发人员的编程接口,它决定了我们开发的Windows应用程序的能力。MFC是微软为开发人员提供的类库,在某种意义上是对Win32 API的封装。本文试图从全局角度对Win32 API和MFC进行理解──给出二者的概念模型。本文使用UML描述概念模型。Win32 API本不是面向对象的,我用面向对象的观点去理解它,无非是想表达其全局。 本文参考了MSDN、相关书籍和网上的一些资料,在此一并感谢。 一、Win32 API的概念模型Win32 API的obje
2011-04-28 15:32:00
538
原创 HSHELL_WINDOWCREATED 学习心得
HSHELL_WINDOWCREATED A top-level, unowned window has been created. The window exists when the system calls this hook.<br /> <br />上面写的很清楚,这种消息只能在top-level,unowned window被创建的时候才会生成。那什么是 top-level, unowned window 。这个网站上写的比较清楚http://www.codeguru.com/forum/
2011-04-28 15:25:00
1989
原创 最近学习拦截下载窗口创建的一些心得
最近自己在搞一个课题,其中一部分工作是拦截浏览器下载框,即一旦浏览器下载框创建了,我就可以拦截到。刚开始的时候不知道从哪儿入手,自己就一步一步的找,用时也差不多一个月了。说说自己的体会吧,希望对后面的人有所帮助。
2011-04-27 21:53:00
1665
转载 Process and Thread Functions (进程和线程相关API函数)
Process and Thread Functions<br />The following functions are used with processes.<br />FunctionDescriptionCreateProcessCreates a new process and its primary thread.CreateProcessAsUserCreates a new process and its primary thread. The new process runs in th
2011-04-27 16:04:00
935
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人