NtSetInformationKey 在 Windows Native API 中有什么作用?

逆向工程 视窗
2021-06-30 23:09:00

ProcMonRegSetInfoKey在注册表列为“操作”。Process Monitor 操作不一定直接映射到 Native 符号,但是,此操作似乎使用NtSetInformationKey但是,当我们检查该函数时,我们看到它有一个参数:IN KEY_SET_INFORMATION_CLASS InformationClass最后,undocumented.ntinternals.net 声明:

目前仅支持 KEY_WRITE_TIME_INFORMATION。

当我们查找KEY_WRITE_TIME_INFORMATION 时,定义只是一个简单的数据结构,用于存储对注册表项的最后写入时间。那么问题就变成了,当 ProcMon 显示最后一次写入时间,但没有发生 RegSetKey 或其他写入时,设置这个值的目的是什么,对这个成员的简单写入实际发生了什么?

1个回答

听起来很简单 -NtSetInformationKey使用类调用KEY_WRITE_TIME_INFORMATION只是用于修改上次修改键的时间。

原因取决于上下文,但我可以猜到几个:

  1. 恶意软件想要确保调查该注册表的用户会认为它在不同的时间就存在(它总是存在以使其看起来是良性的,或者它只是为了使检测到的感染看起来很新而编写的)。
  2. 程序使用时间作为“最后一次更新”,偶尔需要手动修改它以适应某些业务逻辑。

您应该利用您的想象力或您对正在研究的程序的其他了解来弥补其他原因,这很有趣!:D