有很多方法可以在不求助于挂钩或驱动程序的情况下做到这一点。
例如,备用数据流 (ADS),或创建具有“非法”名称的文件,即保留名称(NUL, CON... 尾随.,现有文件的备用大小写)。是的,在 Win32 中,文件名中的尾随点是非法的,但最常用的文件系统 (NTFS) 可以轻松创建或处理它们。对于 ADS,也可以将其粘贴到文件夹中,某些工具无法正确处理该文件夹。也就是说,C:\Windows\regedit.exe:yourfile您可以将其粘贴到C:\Windows:yourfile. 不确定是否可能,但作为恶意软件编写者,我还会查看特殊文件,例如\$Mft是否有可能将 ADS 附加到...
回避 Win32 名称解析是一种无需求助于 NT 本机 API 就可以隐藏起来的好方法。然而,访问文件的某些特定情况可能仍需要单独使用 NT 本地 API(即使创建和删除此类文件不是必需的)。
另一种方法是编写文件系统过滤器驱动程序,但在这种情况下您的麻烦是 Windows 要求对驱动程序进行签名。因此,如果您编写了一个狡猾的驱动程序,很可能您不会得到 Microsoft 的会签。取决于他们在认证签署之前对驱动程序进行了多少测试。
对于文件系统过滤器驱动程序,您可以选择微型过滤器,它们相对容易编写(Windows 驱动程序工具包中有全面的示例代码),但必须遵循某些规则。同样,由于签名要求,这可能无法通过签名。但是,如果只是为了学习,您可以在 Windows 上启用测试签名并使用它。在最近的 Windows 10 中,这是唯一的官方方法。
另一种方法是编写遗留文件系统过滤器驱动程序(例如过滤器管理器、fltmgr.sys、 是),因为它为您提供了更多的自由。唉,这也是一项更复杂的工作,学习曲线更陡峭。并且最终存在相同的签名要求。
除了标准的过滤器驱动程序之外,您还可以做一些狡猾的事情,例如窃取另一个驱动程序的入口点(通常用于 IRP 主要功能),从而捎带这样一个驱动程序的功能。再次签署要求是一个障碍。
我想提到的最后一种方法是分析现有的驱动程序,看看是否可以在其中找到任何可利用的漏洞。如果你找到了一些,它就像一个头奖,你可以回避所有这些签名要求。但它也是所有可能路线中最复杂的。
必读:“Rootkits 和 Bootkits”,它解释了某些恶意软件类型如何隐藏在文件系统之外,以及 Greg Hoglund 于 2005 年命名的较旧的“Rootkits”。
还有一点要注意:不确定你希望从中得到什么,但挂钩似乎是最不可靠的,但却是你拥有的最多的升旗方式。不知道你为什么坚持(根据你的评论)。