资源简介
网络上大多数的 Windows内核安全编程从入门到实践 的资源下载都是不完整,起码我下的都是不完整的,连第四章的进程部分的代码都没有,后来我找了很久,想联系作者,发现邮箱都注销了。偶然间,我还是成功下载了一份相对来说较为完整的资源,一开始看它才不到2M,有些小,但确是挺完整的。包含了3、4、5、6、7、8章,还有第四章的勘误。因为资源难找,所以下载的分数提高些^_^
代码片段和文件信息
//
//Description:
// 本程序用于展示回调对象的简单使用方法。在XP SP3平台上测试通过。
// 使用vs2008+visualDDK+WDK7100编译
//
//Writen By: 宁妖 2011/4/17
//
//Last Write Time: 2011/4/18
//
#include “stdafx.h“
PCALLBACK_object pCallback = NULL;
void CallbackUnload(IN PDRIVER_object Driverobject);
NTSTATUS CallbackCreateClose(IN PDEVICE_object Deviceobject IN PIRP Irp);
NTSTATUS CallbackDefaultHandler(IN PDEVICE_object Deviceobject IN PIRP Irp);
#ifdef __cplusplus
extern “C“ NTSTATUS DriverEntry(IN PDRIVER_object Driverobject IN PUNICODE_STRING RegistryPath);
#endif
NTSTATUS DriverEntry(IN PDRIVER_object Driverobject IN PUNICODE_STRING RegistryPath)
{
UNICODE_STRING DeviceNameWin32Device;
PDEVICE_object Deviceobject = NULL;
NTSTATUS status;
unsigned i;
UNICODE_STRING DemoCallback;
object_ATTRIBUTES oa;
RtlInitUnicodeString(&DeviceNameL“\\Device\\Callback0“);
RtlInitUnicodeString(&Win32DeviceL“\\DosDevices\\Callback0“);
for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++)
Driverobject->MajorFunction[i] = CallbackDefaultHandler;
Driverobject->MajorFunction[IRP_MJ_CREATE] = CallbackCreateClose;
Driverobject->MajorFunction[IRP_MJ_CLOSE] = CallbackCreateClose;
Driverobject->DriverUnload = CallbackUnload;
status = IoCreateDevice(Driverobject
0
&DeviceName
FILE_DEVICE_UNKNOWN
0
FALSE
&Deviceobject);
if (!NT_SUCCESS(status))
return status;
if (!Deviceobject)
return STATUS_UNEXPECTED_IO_ERROR;
Deviceobject->Flags |= DO_DIRECT_IO;
status = IoCreateSymboliclink(&Win32Device &DeviceName);
Deviceobject->Flags &= ~DO_DEVICE_INITIALIZING;
//
//创建一个回调对象
// 注意回调对象都是放在\Callback目录中
//
RtlInitUnicodeString(&DemoCallbackL“\\Callback\\DemoCallback“);
//注意一定要指定OBJ_PERMANENT,否则ExCreateCallback无法成功创建一个带有名字的回调函数
InitializeobjectAttributes(&oa&DemoCallbackOBJ_CASE_INSENSITIVE|OBJ_PERMANENT NULLNULL);
status = ExCreateCallback(&pCallback&oaTRUETRUE);
if (!NT_SUCCESS(status))
KdPrint((“Callback ExCreateCallback Failure!status: 0x%08x\n“status));
KdPrint((“Callback ——pCallback: 0x%08x\n“pCallback));
return STATUS_SUCCESS;
}
void CallbackUnload(IN PDRIVER_object Driverobject)
{
UNICODE_STRING Win32Device;
RtlInitUnicodeString(&Win32DeviceL“\\DosDevices\\Callback0“);
IoDeleteSymboliclink(&Win32Device);
IoDeleteDevice(Driverobject->Deviceobject);
//创建的回调对象需要调用ObDereferenceobject减少一次引用次数(引用次数为0则删除)。
if (pCallback)
ObDereferenceobject(pCallback);
}
//
//当有程序打开或者关闭本驱动的时候,将通知所有向回调对象注册的函数。
//
NTSTATUS CallbackCreateClose(IN PDEVICE_object Deviceobject IN PIRP Irp)
{
PIO_STACK_LOCATION pSP = IoGetCurrentIrpStackLocation(Irp);
char* pImageName = NULL;
if (pCallback)
{
//获取进程名使用硬编码:0x174
pImageName = (char*)((ULONG)PsGetCurrentProcess()+0x174);
//
//通知注册函数
//arg1:主功能码(IRP_MJ_READ或者IRP_MJ_WRITE)
//arg2:当前进程的进程名
//
ExNotifyCallback(pCallback(PVOID)pSP->MajorFunction
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3587 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\Callback.cpp
文件 1817 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\Callback.sln
文件 3669 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\Callback.vcproj
文件 1411 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\Callback.vcproj.宁妖-PC.宁妖.user
文件 389 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\Callback.Win32.vddklaunch
文件 79 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\sources
文件 70 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\stdafx.cpp
文件 424 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\stdafx.h
文件 1055 2012-08-29 11:50 Projects\chapter 3\Callback\Callback\VisualDDKHelpers.h
文件 1813 2012-08-29 11:50 Projects\chapter 3\Callback\CallbackUser\CallbackUser.sln
文件 3926 2012-08-29 11:50 Projects\chapter 3\Callback\CallbackUser\CallbackUser.vcproj
文件 1411 2012-08-29 11:50 Projects\chapter 3\Callback\CallbackUser\CallbackUser.vcproj.宁妖-PC.宁妖.user
文件 402 2012-08-29 11:50 Projects\chapter 3\Callback\CallbackUser\main.cpp
文件 2339 2012-08-29 11:50 Projects\chapter 3\Callback\Client\Client.cpp
文件 877 2012-08-29 11:50 Projects\chapter 3\Callback\Client\Client.sln
文件 3661 2012-08-29 11:50 Projects\chapter 3\Callback\Client\Client.vcproj
文件 1411 2012-08-29 11:50 Projects\chapter 3\Callback\Client\Client.vcproj.宁妖-PC.宁妖.user
文件 383 2012-08-29 11:50 Projects\chapter 3\Callback\Client\Client.Win32.vddklaunch
文件 75 2012-08-29 11:50 Projects\chapter 3\Callback\Client\sources
文件 70 2012-08-29 11:50 Projects\chapter 3\Callback\Client\stdafx.cpp
文件 424 2012-08-29 11:50 Projects\chapter 3\Callback\Client\stdafx.h
文件 1055 2012-08-29 11:50 Projects\chapter 3\Callback\Client\VisualDDKHelpers.h
文件 8587 2012-08-29 11:50 Projects\chapter 3\Demo 3.2\Demo\Demo.c
文件 1338 2012-08-29 11:50 Projects\chapter 3\Demo 3.2\Demo\Demo.sln
文件 2787 2012-08-29 11:50 Projects\chapter 3\Demo 3.2\Demo\Demo.vcproj
文件 1411 2012-08-29 11:50 Projects\chapter 3\Demo 3.2\Demo\Demo.vcproj.宁妖-PC.宁妖.user
文件 377 2012-08-29 11:50 Projects\chapter 3\Demo 3.2\Demo\Demo.Win32.vddklaunch
文件 244 2012-08-29 11:50 Projects\chapter 3\Demo 3.2\Demo\MAKEFILE
文件 73 2012-08-29 11:50 Projects\chapter 3\Demo 3.2\Demo\sources
文件 3918 2012-08-29 11:50 Projects\chapter 3\Demo 3.2\DemoUser\DemoUser.vcproj
............此处省略343个文件信息
相关资源
- Windows内核和驱动进程保护
- Windows内核安全与驱动开发 随书代码
- Windows内核安全编程从入门到实践[代码
- Windows内核安全与驱动开发(随书光盘
- Rootkits-Subverting_the_Windows_Kernel
- 《寒江独钓:Windows内核安全编程》源码
- Windows内核原理与实现.pdf284554
- Windows内核实验教程-陈向群清晰版本非
- WINDOWS内核原理与实现.pdf
- Windows内核原理与实现高清pdf版
- 《Windows内核安全与驱动开发》随书光
- 竹林蹊径——深入浅出Windows内核驱动
- WINDOWS内核原理与实现 完整版 PDF
- 《Windows内核安全与驱动开发》的PDF
- 《ARCore之路-Untiy开发从入门到实践》
- 西门子S7-200 PLC从入门到实践
- Windows内核原理与实现
- docker从入门到实践《第三版》
- ARCore之路-Unity开发从入门到实践.p
- windows内核源代码
评论
共有 条评论