SysInternal 的输出 handle.exe

Output of SysInternal's handle.exe

我正在使用 SysInternal 的 handle.exe 并且我正在尝试理解输出。

这是一个片段:

  24C: File  (RW-)   C:\Program Files (x86)\Google\Chrome\Application\Dictionaries\en-US-8-0.bdic
  2E8: Section       \Sessions\BaseNamedObjects\CrSharedMem_5ae414b12a307dbddc3f42b8b35edcbf313107945050b3aaab1602ecd937c940
  2F4: Section       \Sessions\BaseNamedObjects\CrSharedMem_ccfa88ab65617b75dbdcb72cb6512bf1a9cc76d07a25e9f770b46f4f7c2234bf
  314: File  (R--)   C:\Windows\Fonts\arial.ttf
  324: File  (R--)   C:\Windows\Fonts\arialbd.ttf
  328: File  (R--)   C:\Windows\Fonts\arialbi.ttf
  1. 开头的数字是什么意思?
  2. "Section"是什么意思?我能理解打开的文件,但什么是打开的部分?
  3. RWD 三元组是什么意思?我猜 R 和 W 是读写的,但是 D 是什么?

第一列是HANDLE值,作为OS内核对象的唯一标识符。就像数据库记录的 ID 列。仅当您需要将它与调试器在调试代码时告诉您的内容进行比较时才有用。

第二列标识 OS 对象的类型。 "File"很明显,一个"Section"就是一个允许进程共享内存的对象。 "Memory mapped file" 是编程中常用的短语。 "Mutant"容易混淆,正常说话就是互斥。该程序的作者使用 David Cutler 喜欢的术语,他用 VMS lisp 说话。 WinObj 实用程序是查看这些内核对象的另一种方式。

括号中的字母是创建对象时指定的共享选项。 CreateFile 的第三个参数。知道这一点很重要,因为它会告诉您另一个程序在也想访问该对象时可以做什么。 R 说它可以读,W 说它可以写,D 说它可以删除对象而不影响任何其他使用该对象的人。在每个人都关闭他们的句柄之前,该对象不会被销毁。反恶意软件扫描程序或搜索索引器是使用删除共享的程序的典型示例。