在内核模式下创建线程和用户模式下创建线程有所不同,在用户模式下创建线程线程函数执行完自动返回,在内核模式下需要调用API来结束一个线程。

下面编写一个新建一个线程来输出”welcome to www.lingdux.com

首先确认流程如下:

1.定义线程函数MyThread()用来实现输出”welcome to www.lingdux.com\n”。

2.线程函数中使用PsTerminateSystemThread()函数来终止线程。

3.使用PsCreateSystemThread()函数来创建线程并运行线程函数。

实现代码如下:

 

#include “ntddk.h”


VOID Unload(IN PDRIVER_OBJECT DriverObject)
{
}
VOID MyThread(IN PVOID pContext)//线程函数
{
 DbgPrint(“Welcome to www.lingdux.com\n”);
 PsTerminateSystemThread(0);//终止线程
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)
{
 HANDLE myhandle;//定义句柄
 PsCreateSystemThread(&myhandle,//得到句柄
  0,
  NULL,
  NULL,
  NULL,
  MyThread,//线程函数
  NULL);//不传递参数,为空
 DriverObject->DriverUnload=Unload;
 return STATUS_SUCCESS;
}

加载驱动DbgView成功截获到Welcome to www.lingdux.com

, , , ,
Trackback

本文到目前为止有 5 个回复

  1. 我怎么觉得零度兄也快毕业了呢

    [回复]

    零度x 回复:

    还差得远呢,我ring3编程也不过关,在补习,感觉hook那很不好理解,再看ring3的hook。

    [回复]

  2. 又一个专业的网站….
    看不懂 哈哈

    [回复]

    零度x 回复:

    呵呵

    [回复]

  3. 不错~

    [回复]

添加回复