驱动中枚举和关闭内核句柄

WIN64AST的作者之前发布了一些教程,里面有关于关闭内核句柄的介绍,但是他忘了一件事,所以那份代码并不能真正的关闭内核句柄,而且他的代码。。。不敢用在项目里。有人在看雪上问过类似问题,我也回答过,在vista之后,windows会检查内核句柄值得有效性,也就是为什么下面我提供的代码中会有这一行:

*(PULONG64)HandleValue |= (ULONG64)KERNEL_HANDLE_MASK,为什么,自己想。

因为大多数时候我们都是关闭的文件句柄,这份代码就是只提供了关闭文件句柄,你可以自己改改。

 

 

头文件unlockfile.h:

 

#include "ntifs.h"

#pragma pack(8) //让编译器对这个结构作8字节对齐
typedef struct   _FILE_HANDLE_INFO
{
	CHAR	FilePath[264];
	HANDLE	hProcess;
	HANDLE	hHandle;
	PVOID	Object;
	ULONG	HandleCount;
}FILE_HANDLE_INFO, *PFILE_HANDLE_INFO;

typedef struct   _FILE_HANDLE_INFO_LIST
{
	ULONG64 Count;
	FILE_HANDLE_INFO Info[1];
}FILE_HANDLE_INFO_LIST, *PFILE_HANDLE_INFO_LIST;
#pragma pack() //取消8字节对齐,恢复为默认字节对齐

PFILE_HANDLE_INFO_LIST EnumFileHandle();
BOOLEAN ForceCloseHandle(HANDLE hProcess, HANDLE HandleValue);
BOOLEAN ForceCloseHandleByPath(const char* Path);

 

 

 

 

 

 

源文件unlockfile.c:

 

 

#include "unlockfile.h"

typedef struct _HANDLE_INFO{
	UCHAR	ObjectTypeIndex;
	UCHAR	HandleAttributes;
	USHORT	HandleValue;
	ULONG	GrantedAccess;
	ULONG64	Object;
	UCHAR	Name[256];
} HANDLE_INFO, *PHANDLE_INFO;

typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO{
	USHORT	UniqueProcessId;
	USHORT	CreatorBackTraceIndex;
	UCHAR	ObjectTypeIndex;
	UCHAR	HandleAttributes;
	USHORT	HandleValue;
	PVOID	Object;
	ULONG	GrantedAccess;
} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;

typedef struct _SYSTEM_HANDLE_INFORMATION {
	ULONG64 NumberOfHandles;
	SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;

typedef struct _OBJECT_BASIC_INFORMATION {
	ULONG                   Attributes;
	ACCESS_MASK             DesiredAccess;
	ULONG                   HandleCount;
	ULONG           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值