资源简介

网络上大多数的 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个文件信息

评论

共有 条评论