NTFS权限保护核心DLL的关键是精准控制写入与修改权限,而非加密或隐藏;默认所有者为TrustedInstaller,禁用继承后仅保留SYSTEM、Administrators和TrustedInstaller必要权限,并配合注册表防护与定期验证。
靠 ntfs 权限保护系统核心 dll 文件不被劫持,核心不是“加密”或“隐藏”,而是精准控制谁有“写入”和“修改”权限——尤其要阻止普通用户、服务账户甚至部分管理员意外或恶意替换关键模块。
锁定所有权与基础权限
Windows 系统目录(如 C:\Windows\System32)下绝大多数 DLL 默认所有者是 TrustedInstaller,这是设计上的安全基线。不要轻易改所有权,否则可能破坏系统更新或服务启动。若确需调整(例如排查第三方软件冲突),应按以下顺序操作:
- 先用
takeown /f "路径" /a /r将目标 DLL 及其所在文件夹的所有权交还给 Administrators 组(/a表示授予 Administrators,/r递归) - 再执行
icacls "路径" /grant Administrators:F /deny Users:(W,D,DC),明确拒绝 Users 组的写入(W)、删除(D)和删除子容器(DC)权限 - 对 SYSTEM 和 TrustedInstaller 保持默认只读或受限访问,不额外授予权限
禁用继承并设最小必要权限
系统 DLL 所在路径(如 System32、SysWOW64)本身已启用权限继承,但继承链可能被上层目录宽松策略污染。建议对关键 DLL 所在文件夹(如 C:\Windows\System32\drivers)手动禁用继承,并清除无关条目:
- 右键文件夹 → 属性 → 安全 → 高级 → 取消勾选“启用继承”,选择“删除所有已继承的权限项”
- 仅保留必要主体:SYSTEM(读取+执行)、Administrators(读取+执行)、TrustedInstaller(完全控制)
- 确保 Everyone、Users、IIS_IUSRS 等通用组不在列表中;如有,直接移除
防范服务/进程注入式劫持
很多 DLL 劫持并非直接覆盖文件,而是通过加载路径优先级(如当前目录、PATH)或注册表劫持(AppInit_DLLs、KnownDLLs)实现。NTFS 权限虽不能阻止加载行为,但可切断落地环节:
- 检查
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs,确保无异常 DLL 名称被硬编码注册 - 禁用
AppInit_DLLs(位于同路径下),或将值设为空字符串并设为只读权限(用 icacls 对注册表项设置 Administrators:R,其余全拒) - 对第三方软件安装目录(如
C:\Program Files\XXX)严格限制 Users 组的写入权,防止其释放恶意 DLL 并诱导应用加载
验证与持续防护
设完权限不代表一劳永逸。系统更新、驱动安装、甚至某些杀毒软件会重置部分路径权限。建议:
- 每月运行一次
sfc /scannow,它不仅修复文件内容,也会同步恢复官方权限模板 - 用
icacls C:\Windows\System32\*.dll /verify快速检查是否有 DLL 权限偏离标准(返回非空即异常) - 将关键 DLL 的哈希值导出存档(如用
certutil -hashfile xxx.dll SHA256),便于日后比对是否被静默替换

















