【原创】获取指定index的 OBJECTTYPE

21 篇文章 1 订阅
11 篇文章 1 订阅

ULONG64 onlythisfile_SreachFunctionAddress(ULONG64 uAddress, UCHAR *Signature, ULONG addopcodelength, ULONG addopcodedatasize)
{
ULONG64 index = 0;
UCHAR *p = 0;
ULONG64 uRetAddress = 0;
ULONG32 temp64 = 0;
if (uAddress == 0){ return 0; }


p = (UCHAR*)uAddress;
for (index = 0; index<0x3000; index++)
{


if (*p == Signature[0] &&
*(p + 1) == Signature[1] &&
*(p + 2) == Signature[2] &&
*(p + 3) == Signature[3] &&
*(p + 4) == Signature[4])
{


uRetAddress = p+4;










temp64 = (ULONG32)(*(ULONG32*)(uRetAddress + addopcodelength));
;

uRetAddress = temp64 + uRetAddress + addopcodedatasize;


uRetAddress &= 0xfffffff0ffffffff;


return uRetAddress;
}
p++;


DbgPrint("++ %p ", p);


}
return 0;
}

extern PVOID64 __fastcall   GetObjectByindex(ULONG64 index, ULONG64 ObTypeIndexTable);

void initgetobjectbbyindex(){
  UCHAR opcodethis[] = { 0x0f,0xb6,0x41,0xe8,0x48 };
  PVOID debugobject=0;
  ObTypeIndexTable = (PVOID)onlythisfile_SreachFunctionAddress(FUCKGetFunctionAddr(L"ObGetObjectType"), opcodethis, 3, 7);
  DbgPrint("ObTypeIndexTable %p   xx :%p", ObTypeIndexTable, FUCKGetFunctionAddr(L"ObGetObjectType"));

  debugobject=GetObjectByindex(0xb, ObTypeIndexTable);
  DbgPrint("debugobject %p", debugobject);
}
.asm 文件 

.CODE

GetObjectByindex PROC

 mov   rax, rcx
mov     rcx, rdx
mov     rax, [rcx+rax*8]
 ret
GetObjectByindex ENDP
END 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值