摘要: 这里两者代码不小心写一块了,在这里,我的模拟文件代码就是在缓冲区读写上做的小扩展 文件模拟利用了驱动设备的扩展区,模拟对文件的读写 驱动从3环获得数据,存放在缓冲区里,驱动扩展通过拷贝得到驱动缓冲区数据,不同的是驱动扩展引入了offset偏移,可以在某固定偏移处读取或写入数据 代码 三环代码 // 阅读全文
posted @ 2022-04-03 23:44 TLSN 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 一个VS2019的使用小技巧 alt + 鼠标拖动,可以复制代码块 就像这样 阅读全文
posted @ 2022-04-03 23:39 TLSN 阅读(193) 评论(0) 推荐(0) 编辑
摘要: IRP 1、IRP结构 MdlAddress : 内存描述符 UserBuffer : 用户缓冲区 Tail:IRP的尾部,保存了一个联合体 Paramters:从应用层传递来的参数 2、IRP类型 IRP一共有28种 3、编写派遣函数 我们需要在每个派遣函数里面都要调用函数 IoCompleteR 阅读全文
posted @ 2022-04-03 23:38 TLSN 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 一、Vs2019编译文件过大 vs2019或Vs2010编译文件大小过大,可以在工具->选项->文本编辑器->C/C++->高级->禁用数据库,但这样会照成代码补全功能消失 或者我们可以选择 工具->选项->文本编辑器->C/C++->高级->数据库回退,回退框里写地址,这样大型文件就会保留在固定的 阅读全文
posted @ 2022-04-03 23:34 TLSN 阅读(852) 评论(0) 推荐(0) 编辑
摘要: 一、创建打开注册表 1、创建注册表 创建一个注册表项 CreateOption: 我们一般选择REG_OPTION_NON_VOLATILE,注册表的创建保存是非易失性的 Disposition: 2、打开注册表 打开现有的注册表 二、添加项与修改注册表 1、修改注册表 ValueName: 要写入 阅读全文
posted @ 2022-04-03 23:29 TLSN 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 一、文件创建 ZwCreateFile内部调用了IoCreateFile objectAttributes:文件属性,里面有很多属性,可以用下面的函数初始化他 IoStatusBlock :返回状态 FileAttributea: 文件属性,如压缩、加密、隐藏、存档、常规属性 ShareAccess 阅读全文
posted @ 2022-04-03 23:26 TLSN 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 初始化 UNICODE_STRING 与 ANSI_STRING wcslen函数获取字数,不是字节数 初始化: #include <ntddk.h> VOID Unload(PDRIVER_OBJECT driver) { DbgPrint("Driver Unload\n"); } NTSTAT 阅读全文
posted @ 2022-04-03 23:25 TLSN 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 一、宏 KdPrint是DbgPrint的宏 设置预处理到文件 重新生成后打开下面的.i文件即可 这既是去宏后的代码 二、断言(ASSERT) ASSERT也是一个比较复杂的宏 我们测试一下他的作用 代码 #include <ntddk.h> VOID Unload(PDRIVER_OBJECT d 阅读全文
posted @ 2022-04-03 23:23 TLSN 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 一、返回状态NTSTATUS sev是符号位,两位,最高位为0表示正确,最高位为1表示错误 11代表严重性错误,10代表轻微型错误 C是客户位 标识操作系统定义的错误或者用户定义的错误状态 R位被取消了 Facility 是设施位,基本上用全零结构来表示 Code 16位,0到65535 代表了六万 阅读全文
posted @ 2022-04-03 23:21 TLSN 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 一、重载new 与 delete 驱动程序的编写对c++的使用有很大限制 驱动程序中使用new 或 delete操作需要进行重载 会直接报错 重载代码: #include <ntddk.h> void* __cdecl operator new[](size_t size) { DbgPrint(" 阅读全文
posted @ 2022-04-03 23:19 TLSN 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 一、链表 1、代码 #include <ntddk.h> typedef struct _MyLink { LIST_ENTRY ListEntry; int number; } MyLink,*pMyLink; void LinkTest() { LIST_ENTRY List_Head; Ini 阅读全文
posted @ 2022-04-03 23:18 TLSN 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 一、内存管理概念 我们的进程基本都是又system进程调用,由system进程卸载 下面检验 KdPrint(("%s", PsGetProcessImageFileName(PsGetCurrentProcess()) )); PCHAR PsGetProcessImageFileName(IN 阅读全文
posted @ 2022-04-03 23:15 TLSN 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 一、DRIVER_OBJECT与DEVICE_OBJECT DRIVER_OBJECT结构体 Major Function指的是分发函数 DriverUnload指的是卸载函数 DriverStart 驱动对象的起始地址 DriverName驱动名字 FastloDispatch快速IO分发函数 D 阅读全文
posted @ 2022-04-03 23:14 TLSN 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 1、 sc create xxx(这个名随便填) binpath = xx\xx\xx\xx\xx.sys(驱动路径) type = kernel 2、 net start mydriver(这个名与上面随便填的名要一致) 3、 net stop mydriver 4、 sc delete mydr 阅读全文
posted @ 2022-04-03 23:12 TLSN 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 一、系统调用 win32子系统 user32.dll处理用户窗口 gdi32.dll处理画图功能 ntoskrnl.exe I/o管理器函数一般以IO开头 对象 以ob开头 进程 Ps 虚拟内存 mm 配置管理器 Cm 其他 Zw / Pc user32dll与gdi32dll最后会进入Win32k 阅读全文
posted @ 2022-04-03 23:11 TLSN 阅读(49) 评论(0) 推荐(0) 编辑