文章分类 -  『驱动开发』

0环???!!!
摘要:一、前言 之前在winxp 环境下玩驱动开发的时候,都是使用 __asm int 3 内联汇编来抛出异常让windbg接管并进行调试。 那怎么调试别人的驱动程序呢,之前在win7平台上是可以通过ptach的方式直接patch出int 3断点来进行调试 但我最近发现,如果驱动程序是winxp的运行环境 阅读全文 »
posted @ 2023-02-15 23:25 TLSN 阅读(86) 评论(0) 推荐(0) 编辑
摘要:ml 编译汇编 cl 编译c语言 将汇编文件编译成.obj文件 一、首先修改SOURCE 文件 要把汇编文件放在i386目录下 二、build -gw .obj文件就是编译汇编生成的文件 三、也可以只编译汇编文件 我们也可以在汇编文件目录下 执行ml -c vtasm.asm 把vtasm.asm编 阅读全文 »
posted @ 2022-04-13 22:45 TLSN 阅读(63) 评论(0) 推荐(0) 编辑
摘要:一、下载WDK7600镜像 下载安装WDK 链接:https://pan.baidu.com/s/1cCbEnZaqoa9XFUYy4VqwJg 提取码:qwer 二、找到Checked Build Environment 搜索Checked Build Environment 在这个命令行下我们就 阅读全文 »
posted @ 2022-04-13 22:44 TLSN 阅读(289) 评论(0) 推荐(0) 编辑
摘要:一、通过文件句柄调用驱动 1、ZwCreateFile 调用者代码 #include <ntddk.h> VOID Unload(PDRIVER_OBJECT driver) { DbgPrint("Driver Unload\n"); } void CallDriverTest() { HANDL 阅读全文 »
posted @ 2022-04-12 16:55 TLSN 阅读(323) 评论(1) 推荐(0) 编辑
摘要:驱动调用驱动算是分层驱动 一、遍历驱动设备 AttachedDevice :IO管理器通过这个成员找到顶层设备 NextDevice: 一个驱动可能包含很多设备对象,每个设备对象可能属于多个驱动,通过NextDevice枚举到所有设备,nextdevice都属于同一个驱动 二、驱动过滤 IoSkip 阅读全文 »
posted @ 2022-04-12 16:54 TLSN 阅读(118) 评论(0) 推荐(0) 编辑
摘要:一、IO定时器 IoInitializeTimer IoStartTimer 代码 #include <ntddk.h> VOID Unload(PDRIVER_OBJECT driver) { IoStopTimer(driver->DeviceObject); DbgPrint("Driver 阅读全文 »
posted @ 2022-04-12 16:47 TLSN 阅读(104) 评论(0) 推荐(0) 编辑
摘要:一、IRP的同步完成与异步完成 1、IoMarkIrpPending IoMarkIrpPending函数的作用就是告诉IoManager不要回收资源 2、FILE_FLAG_OVERLAPPED CreateFile的倒数第二个成员 三环代码 // syn_asy三环代码.cpp : 此文件包含 阅读全文 »
posted @ 2022-04-12 16:43 TLSN 阅读(285) 评论(0) 推荐(0) 编辑
摘要:一、创建线程 在内核创建线程是在System上创建线程 下面我们实现让exploerer进程创建线程 exploerer.exe 资源管理器进程 代码 #include <ntddk.h> PCHAR PsGetProcessImageFileName(IN PEPROCESS Process); 阅读全文 »
posted @ 2022-04-06 23:17 TLSN 阅读(118) 评论(0) 推荐(0) 编辑
摘要:一、中断请求级 IRQ : 中断请求 PIC : 可编程中断控制器 以前的PIC只能扩展出15个中断 高级PIC可以拓展到24个中断 微软在高级PIC的基础上定义了32个IRQL 中断请求级,其中包含了24个IRQ以及软件的IRQL DriverEntry 在PASSIVE_LEVEL水平下 我们在 阅读全文 »
posted @ 2022-04-04 23:02 TLSN 阅读(263) 评论(0) 推荐(0) 编辑
摘要:直接方式读写 #include <ntddk.h> typedef struct _DEVICE_EXTENSION { PCHAR Buffer; ULONG Length; #define MAX_FILE_LEN 4096 }DEVICE_EXTENSION,*PDEVICE_EXTENSIO 阅读全文 »
posted @ 2022-04-04 22:59 TLSN 阅读(140) 评论(0) 推荐(0) 编辑
摘要:这里两者代码不小心写一块了,在这里,我的模拟文件代码就是在缓冲区读写上做的小扩展 文件模拟利用了驱动设备的扩展区,模拟对文件的读写 驱动从3环获得数据,存放在缓冲区里,驱动扩展通过拷贝得到驱动缓冲区数据,不同的是驱动扩展引入了offset偏移,可以在某固定偏移处读取或写入数据 代码 三环代码 // 阅读全文 »
posted @ 2022-04-03 23:44 TLSN 阅读(115) 评论(0) 推荐(0) 编辑
摘要:一个VS2019的使用小技巧 alt + 鼠标拖动,可以复制代码块 就像这样 阅读全文 »
posted @ 2022-04-03 23:39 TLSN 阅读(208) 评论(0) 推荐(0) 编辑
摘要:IRP 1、IRP结构 MdlAddress : 内存描述符 UserBuffer : 用户缓冲区 Tail:IRP的尾部,保存了一个联合体 Paramters:从应用层传递来的参数 2、IRP类型 IRP一共有28种 3、编写派遣函数 我们需要在每个派遣函数里面都要调用函数 IoCompleteR 阅读全文 »
posted @ 2022-04-03 23:38 TLSN 阅读(320) 评论(0) 推荐(0) 编辑
摘要:一、Vs2019编译文件过大 vs2019或Vs2010编译文件大小过大,可以在工具->选项->文本编辑器->C/C++->高级->禁用数据库,但这样会照成代码补全功能消失 或者我们可以选择 工具->选项->文本编辑器->C/C++->高级->数据库回退,回退框里写地址,这样大型文件就会保留在固定的 阅读全文 »
posted @ 2022-04-03 23:34 TLSN 阅读(919) 评论(0) 推荐(0) 编辑
摘要:一、创建打开注册表 1、创建注册表 创建一个注册表项 CreateOption: 我们一般选择REG_OPTION_NON_VOLATILE,注册表的创建保存是非易失性的 Disposition: 2、打开注册表 打开现有的注册表 二、添加项与修改注册表 1、修改注册表 ValueName: 要写入 阅读全文 »
posted @ 2022-04-03 23:29 TLSN 阅读(175) 评论(0) 推荐(0) 编辑
摘要:一、文件创建 ZwCreateFile内部调用了IoCreateFile objectAttributes:文件属性,里面有很多属性,可以用下面的函数初始化他 IoStatusBlock :返回状态 FileAttributea: 文件属性,如压缩、加密、隐藏、存档、常规属性 ShareAccess 阅读全文 »
posted @ 2022-04-03 23:26 TLSN 阅读(116) 评论(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 阅读(22) 评论(0) 推荐(0) 编辑
摘要:一、宏 KdPrint是DbgPrint的宏 设置预处理到文件 重新生成后打开下面的.i文件即可 这既是去宏后的代码 二、断言(ASSERT) ASSERT也是一个比较复杂的宏 我们测试一下他的作用 代码 #include <ntddk.h> VOID Unload(PDRIVER_OBJECT d 阅读全文 »
posted @ 2022-04-03 23:23 TLSN 阅读(43) 评论(0) 推荐(0) 编辑
摘要:一、返回状态NTSTATUS sev是符号位,两位,最高位为0表示正确,最高位为1表示错误 11代表严重性错误,10代表轻微型错误 C是客户位 标识操作系统定义的错误或者用户定义的错误状态 R位被取消了 Facility 是设施位,基本上用全零结构来表示 Code 16位,0到65535 代表了六万 阅读全文 »
posted @ 2022-04-03 23:21 TLSN 阅读(61) 评论(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 阅读(75) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示