尝试调试进程时获取 NTSTATUS 0xC0000022

逆向工程 风袋 反调试
2021-06-25 20:26:01

我正在尝试使用 windbg(具有管理员权限)调试进程,但出现以下错误:

Could not attach to process XXXX =, NTSTATUS 0xC0000022

{Access Denied} A process has requested access to an object, but has not been granted those access rights

我知道一些反调试技巧正在发挥作用,但我不确定从哪里开始寻找。该程序正在运行多个进程,包括一些具有有趣名称的进程,例如InjectionService,我无法附加到其中任何一个进程并且二进制文件本身被混淆了。我想知道是否有人可以指出我正确的开始方向,例如通过参考一些阅读材料。

1个回答

您提供的信息是有限的,但是,如果 acl 是由驱动程序设置的(​​通常是由 anto 病毒软件完成的),您可以使用以下技术:

首先,您必须研究进程和驱动程序的组成,以了解它们如何相互作用。这可以通过观察系统行为和多次转储内核来完成。通常允许按需故障转储。

一旦你设法理解它,你必须找到让你的代码在环 0 执行的方法。我通常发现库侧加载或修补一种简单的技术,以便在未强制执行签名时加载我的代码。

您的代码应该能够禁用阻止您附加调试器的 ACL。请注意,在环 0 处,您处于密封的另一侧,ACL 的行为确实不同。只需将您的权限升级到环 0 通常就足够了。

仅供参考,有几次,允许附加调试器的进程存储在内核驱动程序的列表中。驱动程序无法按签名进行操作,因此修补是在 RAM 中完成的。