内核驱动
lbird
*
展开
-
如何安装驱动
用那个例子编译成功后,生成一个SYS文件。为了让这个驱动被系统加载,必须创建一个inf文件。由于是使用现成的例子,因此这一步也可以省下来。直接右键点击例子中的inf文件,在弹出的菜单中选择“安装”即可。 这里要注意的是,inf中的StartType参数,它可以控制驱动被加载的方式:SERVICE_AUTO_START (2) 安全模式下不会原创 2006-11-22 11:37:00 · 5837 阅读 · 0 评论 -
如何编译驱动程序
驱动的编译和上层应用程序的编译完全不同,作为初学者应该先了解一下,即使你还不懂得怎么写驱动程序。 首先安装DDK,然后随便找一个例子来测试。在菜单中找到BUILD环境菜单执行,不同的系统要使用不同的BUILD环境。会打开一个DOS窗口,这时CD到那个例子程序,输入 build –cZ回车就可以了。 驱动程序都是用一个由DDK提供的叫build.exe的工具编译的。此程原创 2006-11-22 10:02:00 · 11357 阅读 · 1 评论 -
系统服务挂钩(HOOK) -1
系统服务就是由操作系统提供的一组函数,类似上层开发的Win32 API。 不仅Win32 API可以挂钩,系统服务也可以挂钩。开发者为了捕获各种事件,可以挂钩文件创建函数CreateFile,注册表访问函数RegCreateKey。使用挂钩可以改变操作系统的行为,只要适当地改变挂钩的数据结构和上下文,足够引起新的行为。例如,通过挂钩NtCreateFile系统服务,可以保护敏感文件原创 2006-11-30 14:39:00 · 2456 阅读 · 0 评论 -
驱动程序内存分配
何谓可分页和非分页内存 默认情况下,内核加载器会加载所有的代码部分和全局数据到非分页内存中。而且,加载器是一次加载整个驱动的可执行文件,包括相关的DLL。加载后,内核加载器关闭驱动程序文件,甚至你可以删除当前正在执行的驱动文件。但是,你可以告诉加载器你希望驱动的哪部分是可分页,所谓可分页,就是可能会被换页出内存(Page out)。可以使用下面的指令来实现:#define A原创 2007-02-12 17:36:00 · 7416 阅读 · 0 评论 -
系统服务挂钩(HOOK)-2
上一篇介绍了系统服务挂钩并提供了最简单的例子,接下来主要记录我对这种技术应用的研究心得,比较初浅,不对请高手指教!下面主要以代码为主(未经严格测试,仅供学习参考),实现了1、 保护文件/目录不被删除2、 隐藏文件/目录3、 隐藏进程4、 保护进程不被结束5、 保护注册表键不被打开6、 保护注册表键不被删除网上有几篇文章介绍了部分功能,并提供的源码。所以我主要把对源码的理解写下来,并对源原创 2007-01-17 16:15:00 · 2320 阅读 · 0 评论 -
内核钩子模板
#include #include #pragma pack(1)typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; //Used only in checked build unsigned int Numbe原创 2007-10-16 15:05:00 · 2136 阅读 · 0 评论 -
VC7配置编译环境创建驱动项目
1.创建一个win32空项目2.添加c驱动代码3.设置编译环境(注意下面的h,lib路径根据具体情况更改)开发环境:XP+VC2003Debug版本[C/C++][General] [Additional Include Directories] = s:/sdk/winddk/3790/inc/crt;S:/sdk/WINDDK/3790/inc/wxp;S:/sdk/WINDDK原创 2007-11-17 17:37:00 · 1569 阅读 · 0 评论