win10 x64进程句柄表

原理

EPROCESS ---->0x570指针指向ObjectTable结构体—>[+0x008] TableCode指针指向一个句柄表:存储着各个内核对象地址。

应用层代码—3环

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <Windows.h>


int main()
{
	HANDLE tmp;
	for (int i = 0; i < 20; i++) 
	{
		 tmp  = OpenProcess(PROCESS_ALL_ACCESS, NULL, 6892);
		std::cout << tmp << std::endl;
	}
	tmp = OpenProcess(PROCESS_CREATE_THREAD, TRUE, 6892);
	SetHandleInformation(tmp,HANDLE_FLAG_PROTECT_FROM_CLOSE, HANDLE_FLAG_PROTECT_FROM_CLOSE);
	getchar();
	return 0;

}


算法和查看句柄表

在这里插入图片描述
打印出OpenProcess获取的HANDLE 句柄。根据这个句柄在EPROCESS可以找到对应的内核对象句柄。例如OpenProcess就可以获取到别的进程的EPROCESS。
在这里插入图片描述
获取的是123.exe 的EPROCESS,我们用dbg在上方leizifunc16.exe句柄表中查找。
第一个句柄是0x9c;
首先在leizifunc16.exe EPROCESS—>0x570指针指向ObjectTable结构体—>[+0x008] TableCode指针,取TableCode地址;
其次:用9c/4*0x10 = 270;
再次 :TableCode地址 + 0x270
在这里插入图片描述
对地址进行换算右移16位,在与上FFFFFFFFFFFFFFF0:bf0f634050500001>>0x10&FFFFFFFFFFFFFFF0
16字节。
可以获取到地址FFFFBF0F 63405050 这个地址为:exe头部:_OBJECT_HEADER

kd> dt _OBJECT_HEADER
nt!_OBJECT_HEADER
   +0x000 PointerCount     : Int8B
   +0x008 HandleCount      : Int8B
   +0x008 NextToFree       : Ptr64 Void
   +0x010 Lock             : _EX_PUSH_LOCK
   +0x018 TypeIndex        : UChar
   +0x019 TraceFlags       : UChar
   +0x019 DbgRefTrace      : Pos 0, 1 Bit
   +0x019 DbgTracePermanent : Pos 1, 1 Bit
   +0x01a InfoMask         : UChar
   +0x01b Flags            : UChar
   +0x01b NewObject        : Pos 0, 1 Bit
   +0x01b KernelObject     : Pos 1, 1 Bit
   +0x01b KernelOnlyAccess : Pos 2, 1 Bit
   +0x01b ExclusiveObject  : Pos 3, 1 Bit
   +0x01b PermanentObject  : Pos 4, 1 Bit
   +0x01b DefaultSecurityQuota : Pos 5, 1 Bit
   +0x01b SingleHandleEntry : Pos 6, 1 Bit
   +0x01b DeletedInline    : Pos 7, 1 Bit
   +0x01c Reserved         : Uint4B
   +0x020 ObjectCreateInfo : Ptr64 _OBJECT_CREATE_INFORMATION
   +0x020 QuotaBlockCharged : Ptr64 Void
   +0x028 SecurityDescriptor : Ptr64 Void
   +0x030 Body             : _QUAD

FFFFBF0F 63405050 + 0x30 就刚好是123.exe的EPROCESS

总结

对于16个字节,每几个字节的属性特征,之后在做测试!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值