自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 08-驱动中的文件操作

文件的打开与关闭:ZwCreateFile用于打开或创建文件,其原型如下:NTSTATUS ZwCreateFile(Out PHANDLE FileHandle,In ACCESS_MASK DesiredAccess,In POBJECT_ATTRIBUTES ObjectAttributes,Out PIO_STATUS_BLOCK IoStatusBlock,In_opt PLARGE_INTEGER AllocationSize,In ULONG FileAttributes,I

2020-07-17 12:07:49 556

原创 07-驱动中的注册表

注册表的打开与创建:一般都需要打开或创建一个注册表键,可使用ZwCreateKey函数,函数原型如下:NTSTATUS ZwCreateKey(Out PHANDLE KeyHandle,In ACCESS_MASK DesiredAccess,In POBJECT_ATTRIBUTES ObjectAttributes,Reserved ULONG TitleIndex,In_opt PUNICODE_STRING Class,In ULONG CreateOptions,Out_opt

2020-07-16 18:37:52 535

原创 06-驱动中的内存管理

常规内存分配WDK提供了一系列内存分配函数,其中最基本的是ExAllocatePoolWithTag,函数原型如下:PVOID ExAllocatePoolWithTag (POOL_TYPE PoolType, SIZE_T NumberOfBytes, ULONG Tag);PoolType表示需要申请何种类型的内存,PoolType为POOL_TYPE枚举类型,常用的值是NonPagedPool与PagedPool;其中NonPagedPool表示非分页内存,PagedPool表示分页内存;这里

2020-07-16 14:58:31 695

原创 05-驱动中的自旋锁

链表,全局变量在多线程的使用中可能会存在多个地方同时调用,这时就会引出线程安全问题,这个时候就可以使用锁(不仅仅是自旋锁,当然自旋锁也能解决这个问题,需看实际情况选择)自旋锁是内核中提供的一种高IRQL锁,用同步以及独占的方式访问某个资源。下面给出一个自旋锁的申请和初始化:KSPIN_LOCK SLock;KeInitializeSpinLock(&SLock);KeInitializeSpinLock函数没有返回值。下面的代码展示了如何使用自旋锁。在KeAcquireSpinLock和K

2020-07-16 11:27:23 872

原创 04-驱动中的链表操作

链表分为单向链表和双向链表,但是在内核中一般都是使用的有头双向链表。有头双向链接指的是链表的第一项是没有数据的,只保存链表下一节点和上一节点的指向指针。WDK对链表的定义为:typedef struct _LIST_ENTRY {struct _LIST_ENTRY *Flink;struct _LIST_ENTRY *Blink;} LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;LIST_ENTRY表示一个链表的节点,其中

2020-07-15 21:49:08 490

原创 03-驱动中的字符串操作

在内核层编程一般不使用Unicode而是使用UNICODE_STRING,(字符串长度以Length为准,不要去自己计算,未必是以’\0’结尾的,以免出错,都提供了还自己算它干嘛)typedef struct _UNICODE_STRING {USHORT Length;USHORT MaximumLength;USHORT * Buffer;PWCH Buffer;} UNICODE_STRING;字符串初始化:常用的初始化函数RtlInitUnicodeString(Out PUN

2020-07-15 21:44:21 581

原创 02-上下文,IRQL概念

上下文环境上下文概念:泛指CPU在执行代码时,该代码所处的环境与状态。这些环境状态包括:当前代码所属线程,中断请求级别,CPU寄存器各状态等等。中断请求级别CPU提供了一个IRQL(中断请求级别)的概念,高IRQL的代码可以中断低IRQL的代码的执行过程,从而得到先执行的机会。常见的IRQL,数值越大级别越高PASSIVE_LEVEL 0 可使用所有的内核APIAPC_LEVEL 1 可使用大部分内核APIDISPATCH_LEVEL 2 只能使用特定的API,且只能访问非分页内存非

2020-07-15 17:59:52 218

原创 01-驱动入口函数

内核入口函数同应用层的Winmain函数入口一样,驱动程序也有自己的函数入口,函数名叫DriverEntry,函数原型如下:NTSTATUS DriverEntry(PDRIVER_OBJECT pdriver, PUNICODE_STRING reg)参数一为pdriver,表示一个驱动对象的指针,此参数有系统调用系统自动传入,这个指针,指向名为DRIVER_OBJECT的结构体,里面记录了驱动的详细信息。typedef struct _DRIVER_OBJECT {CSHORT Type;C

2020-07-15 17:17:30 1073

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除