内核驱动全部集合
「已注销」
这个作者很懒,什么都没留下…
展开
-
【原创】windows体系结构学习笔记
标 题: 【原创】windows体系结构学习笔记作 者: 竹君时 间: 2009-03-30,15:29:43链 接: http://bbs.pediy.com/showthread.php?t=84946序言:接触驱动一个学,感觉路走得很艰难,许多底层知识不了解,也没人可以问,许多大牛发表的文章我等初入 kernel 的小菜根本都看不懂,最近学习写驱动,有惑于 Dev原创 2016-07-11 00:11:40 · 672 阅读 · 0 评论 -
驱动框架_创建设备_写28个历程_写mfc应用程序进行通信
#include"ntddk.h"void xiezai1(PDRIVER_OBJECT qudongduixiang1){ UNICODE_STRING fuhaolianjieming1; RtlInitUnicodeString(&fuhaolianjieming1, L"\\??\\shebeiduixiangfuhaolianjieming1"); KdPrint(("222转载 2017-01-26 16:15:04 · 413 阅读 · 0 评论 -
文件指针详解,SetFilePointerEx设置和查询文件指针
1. 文件指针我们大概已经知道该如何创建或者打开一个文件,用CreateFile函数可以轻松做到,还不了解的小伙伴,请穿越到http://www.cnblogs.com/bigsponge/articles/4936599.htmlCreateFile函数会使系统创建一个文件内核对象来管理对文件的操作。在这个内核对象内部有一个文件指针,这是我们今天的主角。文件指针究竟是什么?文件指针是一个转载 2017-02-06 09:09:39 · 3517 阅读 · 1 评论 -
读PE文件的3大结构体_PE文件加载器
#include"stdio.h"#include"stdlib.h"#include"windows.h"int main(){ IMAGE_DOS_HEADER imafe_dos_header;//dos头 IMAGE_NT_HEADERS image_nt_headers;//pe头 IMAGE_SECTION_HEADER *image_section_header;//区原创 2017-02-06 11:16:14 · 376 阅读 · 0 评论 -
Nt**、Zw**和Rtl** 开头的函数介绍
首先他们都是微软未公开的函数,之所以未公开主要是因为这些函数大部分功能太强大了,把他们公开会让一些别有用心的人利用。9x下的我不知道,NT(含2000/xp)下你可以参考《Windows NT Native API》,他们中的大部分函数几乎就从来没有变过。而几乎所有从Kenerl.dll中引出的Win32API,都是通过调用的Native API(NTDLL.DLL中导出)实现系统调用的。举一个例转载 2017-01-13 02:15:34 · 2634 阅读 · 0 评论 -
过滤T雪软件的驱动的一个历程_的驱动
#include"ntddk.h"NTSTATUSObReferenceObjectByName(__in PUNICODE_STRING ObjectName,__in ULONG Attributes,__in_opt PACCESS_STATE AccessState,__in_opt ACCESS_MASK DesiredAccess,__in POBJECT_TYPE O转载 2017-01-26 23:16:19 · 490 阅读 · 0 评论 -
遍历所有驱动的名_根据本驱动对象的成员(DriverObject->DriverSection)_对应LDR_DATA_TABLE_ENTRY结构体_双向链表使用
#include"ntddk.h"typedef struct _LDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks;//这个成员把系统所有加载(可能是停止没被卸载)已经读取到内存中 我们关系第一个 我们要遍历链表 双链表 不管中间哪个节点都可以遍历整个链表 本驱动的驱动对象就是一个节点 LIST_ENTRY InMemoryOrderL...转载 2017-01-27 14:02:44 · 3452 阅读 · 0 评论 -
NTSTATUS类型返回值及含义
0, "STATUS_WAIT_0"1, "STATUS_WAIT_1"2, "STATUS_WAIT_2"3, "STATUS_WAIT_3"63, "STATUS_WAIT_63"128, "STATUS_ABANDONED_WAIT_0"191, "STATUS_ABANDONED_WAIT_63"192, "STATUS_USER_APC"2转载 2017-01-28 12:41:18 · 4096 阅读 · 0 评论 -
内核注册表操作_zwcreatekey _zwopenkey_zwsetvaluekey_zwqueryvaluekey_zwquerykey_zwenumeratekey_zwenumera
#include"ntddk.h"VOID xiezai1(PDRIVER_OBJECT qudongduixiang_wode){ KdPrint(("驱动卸载历程 已经执行\n"));}HANDLE chuanjianzhucebiao_xiang(wchar_t *zhucebiaoxiang_lujing) //ZwCreateKey{ HANDLE jubing;//创建注转载 2017-01-28 19:41:56 · 2425 阅读 · 1 评论 -
打开进程_申请内存_读写内存
#include"ntddk.h"NTSTATUSZwAllocateVirtualMemory(IN HANDLE ProcessHandle,//在这里进程里分配内存的 进程句柄IN OUT PVOID *BaseAddress,//分好内存的地址IN ULONG ZeroBits,//一般写0 IN OUT PSIZE_T RegionSize,//要分配内存的大小 /转载 2017-01-29 14:44:18 · 2701 阅读 · 0 评论 -
inlinehook_ssdt的ntopenkey函数的任意位置
#include"ntddk.h"#pragma pack(1) //写这个内存以一字节对齐 如果不写是以4字节的对齐的 typedef struct ServiceDescriptorEntry {//这个结构就是为了管理这个数组而来的 内核api所在的数组 才有这个结构的 这个是ssdt unsigned int *ServiceTableBase;//就是ServiceTable转载 2017-02-01 00:22:34 · 884 阅读 · 0 评论 -
ssdkhook之ntopenprocess_保护用户层的应用程序不被ce打开_完美版
#include"ntddk.h"NTSTATUS PsLookupProcessByProcessId( _In_ HANDLE ProcessId, _Out_ PEPROCESS *Process );#pragma pack(1) //写这个内存以一字节对齐 如果不写是以4字节的对齐的typedef struct ServiceDescriptorEntry {//这个转载 2017-01-31 04:30:49 · 916 阅读 · 0 评论 -
监控应用层通信_hook_kifastcallentry(系统服务调用)
#include"ntddk.h"#pragma pack(1) //写这个内存以一字节对齐 如果不写是以4字节的对齐的 typedef struct ServiceDescriptorEntry {//这个结构就是为了管理这个数组而来的 内核api所在的数组 才有这个结构的 这个是ssdt unsigned int *ServiceTableBase;//就是ServiceT转载 2017-02-02 00:36:23 · 918 阅读 · 0 评论 -
赞!VC++编程创建远程线程式调用CALL_VirtualAllocEx_WriteProcessMemory_CreateRemoteThread_WaitForSingleObject
16赞!VC++编程创建远程线程式调用CALL。借箭源码:14.解密!远程CALL调用代码实现原理。VirtualAllocEx 在指定进程里申请一块内存LPVOID WINAPI VirtualAllocEx( __in HANDLE hProcess, //进程句柄 __in_opt LPVOID lpAddress, //指定分配的内存地址 N转载 2017-02-02 22:19:17 · 2172 阅读 · 0 评论 -
Windows系统结构图
本章主要介绍系统的总体结构,关键部件之间的交互,以及运行在什么环境。2.系统结构2.1 需求和设计目标2.2 操作系统模型2.3 总体结构2.3.1 可移植性2.3.2 对称多处理2.3.3 可伸缩性()2.3.4 客户和服务器版本的区别2.3.5 版本检查2.4 关键的系统组件2.4.1 环境子系统和子系统dll2.4.1.1 Windows子系统转载 2017-01-24 12:45:34 · 3060 阅读 · 0 评论 -
PE文件结构详解--可执行文件头
了解一个文件的格式,最应该首先了解的就是这个文件的文件头的含义,因为几乎所有的文件格式,重要的信息都包含在头部,顺着头部的信息,可以引导系统解析整个文件。所以,我们先来认识一下PE文件的头部格式。还记得上篇里的那个图吗?DOS头和NT头就是PE文件中两个重要的文件头。一、DOS头DOS头的作用是兼容MS-DOS操作系统中的可执行文件,对于32位PE文件来说,DOS所转载 2017-02-03 08:01:56 · 289 阅读 · 0 评论 -
MFC将任意文件放入资源中调用
将一个版本的程序包含到另一个版本(母体)里面,母体在运行的时候,判断是不是自己需要的版本,如果是,那么就运行,如果不是,那么释放出包含的那个版本的程序,然后运行释放出来的程序。 这样就没有必要将两个程序捆绑到一起,只是把一个程序当作那个母体程序的资源包含到母体程序里面 新建了一个mfc工程,然后在查看资源的地方,选择添加资源,会出现一个对话框,一 个打开文件对话框,这里选择打开一个exe文转载 2017-02-04 05:38:06 · 3246 阅读 · 0 评论 -
资源加载操作_FindResource_LoadResource_LockResource
FindResource是一个计算机函数。该函数确定指定模块中指定类型和名称的资源所在位置。参数编辑hModule:处理包含资源的可执行文件的模块。NULL值则指定模块句柄指向操作系统通常情况下创建最近过程的相关位图文件。lpName:指定资源名称。若想了解更多的信息,请参见注意部分。lpType:指定资源类型。若想了解更多的信息,请参见注意部分。作为标准资源类型。这个参数的含义同Enu转载 2017-02-04 06:01:05 · 4211 阅读 · 0 评论 -
应用层 加载驱动 和 卸载驱动代码
BOOL LoadDriver(char* lpszDriverName,char* lpszDriverPath){ char szDriverImagePath[256] = {0}; //得到完整的驱动路径 GetFullPathName(lpszDriverPath, 256, szDriverImagePath, NULL); BOOL bRet =转载 2017-02-04 06:41:45 · 556 阅读 · 0 评论 -
用户层加载驱动 卸载驱动源码
#include CString s1 = TEXT("MyDriver1.sys"); //lpServiceNameCString s2 = TEXT("C:\\MyDriver1.sys");//lpPathNameBOOL CMFCApplication1Dlg::jiazaiqudong(LPCTSTR lpServiceName, LPCTSTR lpPathName)//加载驱原创 2017-02-04 07:18:42 · 810 阅读 · 0 评论 -
修改IDA pdb下载目录的方法(已实践)
编辑ida目录下cfg/pdb.cfg,把PDBSYM_DOWNLOAD_PATH指向你的符号安装目录,打开idb后选择 文件...载入文件...PDB文件找到IDA/CFG/PDB.CFG 编辑: 找到这里 PDBSYM_DOWNLOAD_PATH = "XX盘:\\symbols"; // Full symbol path (in _NT_SYMBOL_PATH fo转载 2017-05-11 08:22:43 · 5502 阅读 · 0 评论 -
遍历idt表_数组
#include "ntddk.h"#define WORD USHORT#define DWORD ULONG#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) \ | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))typedef str转载 2017-05-11 06:05:20 · 705 阅读 · 0 评论 -
磁盘文件操作_ZwCreateFile_ZwOpenFile_ZwReadFile_ZwWriteFile_ZwSetInformationFile_ZwQueryInformationFile
#include"ntddk.h"VOID xiezai1(PDRIVER_OBJECT qudongduixiang){ KdPrint(("驱动卸载 历程\n")); return;}NTSTATUS DriverEntry(PDRIVER_OBJECT qudongduixiang, PUNICODE_STRING zhucebiao1){ HANDLE wenjianju转载 2017-01-27 19:52:38 · 3186 阅读 · 0 评论 -
反idt hook 隐藏hook idt
#include "ntddk.h"#include "ntddk.h"#define WORD USHORT#define DWORD ULONG#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) \ | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff)转载 2017-05-14 22:57:14 · 1318 阅读 · 0 评论 -
idt hook 原版
#include "ntddk.h"#define WORD USHORT#define DWORD ULONG#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) \ | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))typedef s转载 2017-05-14 23:36:23 · 440 阅读 · 0 评论 -
Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建
原文链接:http://www.cppblog.com/guojingjia2006/archive/2011/03/19/142211.htmlWINDOWS 7 配置驱动开发环境(wdk7.60)1. 安装VS2010,WDK7.60(GRMWDK_EN_7600_1)2. 新建VC 控制台项目(选择为空项目)3. 新建项目配置“dri转载 2017-05-26 13:59:04 · 583 阅读 · 0 评论 -
第二十四课_遍历windows对象目录
#include "ntddk.h"#define MAX_TABLE 37#define MAX_OBJECT_COUNT 0x10000typedef ULONG DEVICE_MAP;typedef ULONG EX_PUSH_LOCK;typedef struct _OBJECT_DIRECTORY_ENTRY{转载 2017-05-18 01:34:34 · 1782 阅读 · 0 评论 -
第二十五课_对象类型的几个回调函数介绍
#include"ntddk.h" typedef enum _OB_OPEN_REASON { ObCreateHandle, ObOpenHandle, ObDuplicateHandle, ObInheritHandle, ObMaxOpenReason} OB_OPEN_REASON;typedef NTSTATUS(*OB_OPEN_METHOD)( IN ULON转载 2017-05-19 11:17:13 · 461 阅读 · 0 评论 -
重载ShadowSSDT
系统环境:WIN732位重载内容:两张系统服务调度表 ,传说的SSDT和ShadowSSDT作用:通过重载内核,可以饶过各大著名驱动保护的HOOK.极少数例外.重载方式:挂勾系统三环和零环的主要通道KiFastCallEntry,然后改变自己的进程,通过新内核.实现环境:NT式驱动环境核心步骤;一,以PE文件在内存中的对齐方式将内核文件和WIN32K.sys读取到内存中.转载 2017-08-19 20:09:31 · 785 阅读 · 1 评论 -
通过驱动名称得到(T雪工具)驱动对象名_ObReferenceObjectByName_函数的用法
//全局的一个对象类型extern POBJECT_TYPE *IoDriverObjectType; 函数原型声明NTSTATUSObReferenceObjectByName ( __in PUNICODE_STRING ObjectName, __in ULONG Attributes, __in_opt PACCESS_STATE AccessState,转载 2017-01-26 17:49:37 · 5918 阅读 · 2 评论 -
通过驱动对象得到Hookport.sys的基地址和大小
#include"ntddk.h" PDRIVER_OBJECT g_qudongduixiang = NULL;typedef struct _LDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks;//这个成员把系统所有加载(可能是停止没被卸载)已经读取到内存中 我们关系第一个 我们要遍历链表 双链表 不管中间哪个节点都可以遍历整个链表转载 2017-09-09 00:02:19 · 705 阅读 · 0 评论 -
第二十三课 认识内核对象_遍历内核对象_名字_地址
#include "ntddk.h" VOID MyUnload(PDRIVER_OBJECT pDriverObject){ KdPrint(("驱动卸载成功\n"));}NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING Reg_Path){ UNICODE_STRING mingzi;转载 2017-05-15 20:10:53 · 757 阅读 · 0 评论 -
hook_对象类型的回调函数打开进程 保护记事本不被打开_
#include"ntifs.h"ULONG yuanshi_OpenProcedure;typedef enum _OB_OPEN_REASON { ObCreateHandle, ObOpenHandle, ObDuplicateHandle, ObInheritHandle, ObMaxOpenReason} OB_OPEN_REASON;...转载 2018-10-03 06:55:52 · 360 阅读 · 0 评论 -
ExAllocatePool函数
如同C里面的malloc一样,内核模式下的ExAllocatePool也是非常重要的.但是一说到ExAllocatePool函数就不得不提ExAllocatePoolWithTag函数.对比一下两个函数的调用方式: PVOID p = ExAllocatePool(Pool_Type, Size); PVOID p = ExAllocatePoolWithTag(Pool_...翻译 2017-05-05 06:24:22 · 714 阅读 · 0 评论 -
内核模式下的文件操作_zwcreatefile_zwopenfile_zwreadfile_zwwritefile
1.文件的创建对文件的创建或者打开都是通过内核函数ZwCreateFile实现的。和Windows API类似,这个内核函数返回一个文件句柄,文件的所有操作都是依靠这个句柄进行操作的。在文件操作完毕后,要关闭这个文件句柄。NTSTATUS ZwCreateFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAc...转载 2017-05-05 06:22:31 · 2385 阅读 · 0 评论 -
IoCreateDevice
调用IoCreateDevice函数创建设备对象,例如:PDEVICE_OBJECT fdo;NTSTATUS status = IoCreateDevice(DriverObject, sizeof(DEVICE_EXTENSION), NULL, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, ...转载 2017-05-02 06:13:40 · 1463 阅读 · 0 评论 -
shadowssdt 地址 数量 遍历
#include "ntddk.h" //SSDT结构体typedef struct ServiceDescriptorTable { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTable; unsigned int NumberOfServices; unsigned int *ParamTable...转载 2017-05-15 21:14:16 · 636 阅读 · 0 评论 -
简单实现了下SSDT SHADOW HOOK
介绍: SSDT SHADOW HOOK可用于安全软件窗口保护、安全输入、截屏保护等。例如:挂钩NtUserFindWindowEx、NtUserGetForegroundWindow、NtUserBuildHwndList、NtUserQueryWindow、NtUserWindowFromPoint、NtUserSetParent、NtUserPostMessage、NtUse...转载 2017-05-11 23:47:33 · 1186 阅读 · 0 评论 -
新手学ssdt_hook_ntopenprocess
#include "ntddk.h" #pragma pack(1)typedef struct ServiceDescriptorEntry { unsigned int *ServiceTableBase; unsigned int *ServiceCounterTableBase; unsigned int NumberOfServices; unsi...转载 2017-05-09 07:16:11 · 567 阅读 · 0 评论 -
028_实战EXE和SYS通信-28课(缓冲模式)_sys_驱动源码
#include"ntddk.h" #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED,FILE_ANY_ACCESS)#define sub_code CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED,FILE_ANY_ACCESS)v...转载 2017-05-22 18:31:32 · 586 阅读 · 0 评论