在内核模式下创建线程和用户模式下创建线程有所不同,在用户模式下创建线程线程函数执行完自动返回,在内核模式下需要调用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
我怎么觉得零度兄也快毕业了呢
[回复]
零度x 回复:
六月 26th, 2009 at 00:48
还差得远呢,我ring3编程也不过关,在补习,感觉hook那很不好理解,再看ring3的hook。
[回复]
又一个专业的网站….
看不懂 哈哈
[回复]
零度x 回复:
六月 26th, 2009 at 14:15
呵呵
[回复]
不错~
[回复]