内核驱动
文章平均质量分 67
sorawa
love hi_tech it
展开
-
ring3上的核心编程总结
<br />其实这些是从<windows高级编程指南>总结下来的<br />觉得书本的例子还是太少了,可能我比较喜欢操作系统功能的例子吧 ^_^<br />总觉得看完 还想继续研究更深点或者,更多用到更多的地方<br />这本书的作者是<window核心编程>的作者Jeffrey Richter<br /> <br />句柄和计数器 为结构体中,为0则释放对象<br />内核是被多其他程序所调用<br />子父孙,3者继承handle<br />查看进程是否可继承 GetHandleInfomation<b原创 2011-03-03 10:56:00 · 1040 阅读 · 0 评论 -
ring3到ring0的过渡----rootkit最基本驱动
这是一个比HelloDDK.sys更简单的例子,其实DDK_Unload都可以不要但是你将没法正常去停止这个内核服务,这个是否让人想起了某些恶意软件连停止内核服务失败的原因,另外还有个宏KdPrint(()),可以替代DbgPrint这个和HelloDDK比起来 功能单一多了,关于后SSDT HOOK,以后再在这个原型上增加功能VOID DDK_Unload( IN PDRIVER_OBJECT DriverObject ){ DbgPrint("Driver Unload");}N原创 2011-03-05 21:00:00 · 485 阅读 · 0 评论 -
ring3下的注入dll
注入DLL是个古老的技术,但是应用很广泛,特别在ring3下注入的方法通常是3种一.通过注册表键去写,这种方法的缺点是要等到系统重启后才能加载,优点就是能方便注入多个,某些恶意软件通过这个方式,注入大量的DLL有时候导致Explorer.exe的线程等待很长时间才能进入桌面二.通过消息钩子,消息钩子的原理是这样的,我从看雪上得知的,如果你设置一个消息钩子,每当某个进程处理消息的时候会检查是否存在钩子,如果存在,将试图把DLL加载进来处理钩子,这样,DLL就轻松进入的进程例子就是中的一个HOOK MESSAG原创 2011-03-11 16:47:00 · 440 阅读 · 0 评论 -
KeyHanlde 回溯出完整的注册表键路径
今天测试这个很无奈的蓝了多次屏...才发现DDK用SEH并不是能解决一切的问题查找资料,归类都几种方法1.ZwQueryKey这种方法并不能获得完整路径2.PCM结构.可以..3.获得注册表结构指针,然后ObQueryNameString#pragma PAGEDCODENTSTATUS __stdcall HookNtSetValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING V原创 2011-05-14 22:26:00 · 619 阅读 · 0 评论 -
DeviceIoControl缓冲模式通信
<br />BOOL DeviceIoControl(<br /> HANDLEhDevice, // handle to device<br /> DWORDdwIoControlCode, // operation<br /> LPVOIDlpInBuffer, // input data buffer<br /> DWORDnInBufferSize, // size of input data buffer<br />原创 2011-05-17 21:49:00 · 796 阅读 · 0 评论 -
由PID得到进程名
<br />网上比较多都是枚举进程获得进程名...<br /> 比较麻烦<br />所以查了下GetModuleFileNameEx的第2个参数NULL情况下获得进程名<br /> <br />// GetProcessNameByPID.cpp : Defines the entry point for the console application.<br />//<br />#include "stdafx.h"<br />#include "windows.h"<br />#include "std原创 2011-05-28 21:46:00 · 754 阅读 · 0 评论