文件名 : WssProcMon.c
描述 : 进程/线程监视器
作者 : sinister
最后修改日期 : 2002-11-02
*****************************************************************/
#include "ntddk.h"
#include "string.h"
#define ProcessNameOffset 0x1fc
static NTSTATUS MydrvDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS PsLookupProcessByProcessId(IN ULONG ulProcId, OUT PEPROCESS * pEProcess);
VOID ProcessCreateMon ( IN HANDLE hParentId, IN HANDLE PId,IN BOOLEAN bCreate);
VOID ThreadCreateMon (IN HANDLE PId, IN HANDLE TId, IN BOOLEAN bCreate);
VOID ImageCreateMon (IN PUNICODE_STRING FullImageName, IN HANDLE ProcessId, IN PIMAGE_INFO ImageInfo );
// 驱动入口
NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath )
{
UNICODE_STRING nameString, linkString;
PDEVICE_OBJECT deviceObject;
NTSTATUS status;
int i;
//建立设备
RtlInitUnicodeString( &nameString, L"\\Device\\WssProcMon" );
status = IoCreateDevice( DriverObject,
0,
&nameString,
FILE_DEVICE_UNKNOWN,
0,
TRUE,
&deviceObject
);
if (!NT_SUCCESS( status ))
return status;
RtlInitUnicodeString( &linkString, L"\\DosDevices\\WssProcMon" );
status = IoCreateSymbolicLink (&linkString, &nameString);
if (!NT_SUCCESS( status ))
{
IoDeleteDevice (DriverObject->DeviceObject);
return status;
}
status = PsSetLoadImageNotifyRoutine(ImageCreateMon);
if (!NT_SUCCESS( status ))
{
DbgPrint("PsSetLoadImageNotifyRoutine()\n");
return status;
}
status = PsSetCreateThreadNotifyRoutine(ThreadCreateMon);
if (!NT_SUCCESS( status ))
{
DbgPrint("PsSetCreateThreadNotifyRoutine()\n");
return status;
}
status = PsSetCreateProcessNotifyRoutine(ProcessCreateMon, FALSE);
if (!NT_SUCCESS( status ))
{
DbgPrint("PsSetCreateProcessNotifyRoutine()\n");
return status;
}
for ( i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++) {
DriverObject->MajorFunction[i] = MydrvDispatch;
}
return STATUS_SUCCESS;
}
//处理设备对象操作
static NTSTATUS MydrvDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0L;
IoCompleteRequest( Irp, 0 );
return Irp->IoStatus.Status;
}
VOID ProcessCreateMon ( IN HANDLE hParentId, IN HANDLE PId,IN BOOLEAN bCreate )
{
PEPROCESS EProcess;
ULONG ulCurrentProcessId;
LPTSTR lpCurProc;
NTSTATUS status;
status = PsLookupProcessByProcessId( (ULONG)PId, &EProcess);
研究者在黎巴嫩发现了很多的受害者,但他们在以色列、土耳其、英国、日本、美国和其它国家也都找到了被侵略的组织。 哈哈,00切断成功了。 文中提及的部分技能、东西或许带有必定攻击性,仅供安全学习和教育...
本来是准备在某篇文章隐藏推荐这个流动的,究竟这种简朴粗暴的小流动,经不起羊毛雄师的糟蹋。不外这器械拖不得太久,早点上车能赚到钱的希望也越大。“燃脂夺宝+”是微信的一个小程序,新用户可免费领取2米红包,...
Facebook究竟有多么的强劲?除开能够在Facebook上共享內容,交友聊天以外,如今英国老百姓还能够在Facebook上为侯选人网络投票啦! 英国新泽西州将是英国第一个容许英国住户根...
四五事件(四五”运动爆发) 天安门广场上聚集了上百万群众 1976年4月5日,发生了以天安门事件为中心的反对“四人帮”的全国性的群众抗议运动,亦称“天安门事件”。 1976年3月下旬至4月5日,全国各...
最简单盗别人微信密码微信密码破解盗取微信密码的步骤如何盗取微信密码微信吧怎么盗取别人的qq密码如何盗微信号4大步骤微信登录盗取。 为什么想着去盗别人的微信账号呢?这个现在是违法,也是违规的个人建议不要...
潮汕卤味(潮汕卤 将新鲜的南姜舂碎,以10:1的比例加入盐拌匀入玻璃瓶中储藏成为南姜麩,这就是潮汕人最爱的美食来源秘密法宝。南姜鸡即是以南姜麩来腌制制作的,它的口感像冷切鸡,又多了几分紧致细嫩。...