阻止特定路径上的任何程序启动

阻止特定路径上的任何程序启动

我想阻止执行任何具有特定完整路径名的程序。

例如,如果D:\foo.exe在黑名单中,任何重命名并移动到该路径的程序都不会运行。如果重命名或移动到其他位置,则在其他条件允许的情况下(ACL 等),该程序可能会运行。

是否有适用于 Vista(NT 6.0)及以上版本的解决方案?此外,是否有特定于 Windows 10 的解决方案?如果有,那么“最低要求”版本是什么(例如 v1507)?

答案1

您将需要编写自己的反执行程序。

关于在内核中挂钩进程创建的文章有很多,但是它们都需要安装驱动程序,这不太可移植,并且在以后的 Windows 版本中会遇到驱动程序签名问题。

最简单的解决方案是编写一个小型 DLL 注入到所有进程中,该 DLL 将在该进程的上下文中获取其路径,如果来自该路径,则立即终止它。

使用 regedit 并导航到 即可注入 DLL HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs。在更高版本的 Windows 中,AppInit_DLLs当启用安全启动时,将被禁用。

请参阅 Microsoft 文章 使用 AppInit_DLLs 注册表值

此类 DLL 的骨架可能如下所示:

BOOL
WINAPI
DllMain ( HINSTANCE hInst, DWORD dwReason, LPVOID) {
  TCHAR acModule[MAX_PATH];
  switch (dwReason) {
    case DLL_PROCESS_ATTACH:
      GetModuleFileName(NULL,acModule,MAX_PATH);
      to_be_written(acModule);
      break;
    default:
      break;
  }
  return TRUE;
}

相关内容