【问题标题】:Is ok to use undocumented SYSTEM_PROCESS_INFORMATION?可以使用未记录的 SYSTEM_PROCESS_INFORMATION 吗?
【发布时间】:2014-07-10 12:50:20
【问题描述】:

我为了教育目的而挂钩 NtQuerySystemInformation,我进入了一个用于 SYSTEM_PROCESS_INFORMATION 的工作结构。然后我想到了一些问题:

1 - 可以使用这种结构吗?

2 - 官方结构是什么?

3 - 人们是如何发现这种无证结构的?

这是我正在谈论的代码的一部分,包含结构:

//here is what i'm talking about
type
PProcessInfo = ^TProcessInfo;
TProcessInfo=record
dwOffset : dword;
dwThreadCount : dword;
dwUnkown1 : array[0..5] of dword;
ftCreationTime : TFileTime;
dwUnkown2 : dword;
dwUnkown3 : dword;
dwUnkown4 : dword;
dwUnkown5 : dword;
dwUnkown6 : dword;
pszProcessName : PWideChar;
dwBasePriority : dword;
dwProcessID : dword;
dwParentProcessID : dword;
dwHandleCount : dword;
dwUnkown7 : dword;
dwUnkown8 : dword;
dwVirtualBytesPeak : dword;
dwVirtualBytes : dword;
dwPageFaults : dword;
dwWorkingSetPeak : dword;
dwWorkingSet : dword;
dwUnkown9 : dword;
dwPagedPool : dword;
dwUnkown10 : dword;
dwNonPagedPool : dword;
dwPageFileBytesPeak : dword;
dwPageFileBytes : dword;
dwPrivateBytes : dword;
dwUnkown11 : dword;
dwUnkown12 : dword;
dwUnkown13 : dword;
dwUnkown14 : dword;
ThreadInfo : PThreadInfo;
end;
//finish here, below is just some little snippet of the code

function NtQuerySystemInformationCallbackProc(dt : dword; buf : pointer; bufsize : dword; retlen : pointer) : dword; stdcall;
type
PBA = ^TBA;
TBA = array[0..1000000] of byte;
var
tmpbuf: PBA;
ProcessInfo ,LastPinfo : PProcessInfo;
cp: DWORD;
curproc:string;
begin
Result := NtQuerySystemInformationNextHook(dt,buf,bufsize,retlen);
if dt<>5 then exit;
if result<>0 then exit;
cp := 0;
tmpbuf := buf;
continues....

没有更多未记录的结构,但这是我唯一可以正常工作的结构。

【问题讨论】:

标签: windows delphi winapi


【解决方案1】:

可以用这个结构吗?

这取决于你。 documentation 说:

NtQuerySystemInformation 可能会在未来的 Windows 版本中更改或不可用。应用程序应使用本主题中列出的替代功能。

我想决定取决于你是否关心你的应用程序在结构改变、函数被删除或行为被修改的情况下是否正常工作。

官方结构是什么?

可以在documentation找到。

人们是如何发现这种无证结构的?

结构是documented。保留字段的解释很可能是通过逆向工程发现的。另一种可能性是信息泄露,要么来自微软员工,要么来自阅读保密协议下的源代码的人。

【讨论】:

  • 是的,但在 MSDN 中,代码中没有关于 TProcessInfo 结构的参考。这就是我所说的。
  • 使用官方和文档化的结构可以像我一样工作吗?
  • 对不起,我不明白那个评论
  • TProcessInfoSYSTEM_PROCESS_INFORMATION 的 Delphi 表示,但对保留字段有一些额外的猜测。
猜你喜欢
  • 2013-02-18
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
相关资源
最近更新 更多