绕过Windows Defender启用的文件夹访问控制的限制

BK_*_*BK_ 6 c# delphi security windows-defender controlled-folder-access

我有一个用C#编写的应用程序,它是通过InnoSetup安装的。

启用Windows 10 Defender的“ 受控文件夹访问”后,安装程序无法创建桌面图标(显示消息PersistFile::Save failed, code 0x80070002)-尽管以管理权限运行。

此外,已安装的应用程序(未以管理特权运行)无法写入用户的文件夹,例如Documents

即使对于新文件或文件夹,也不会覆盖现有文件,这也会发生。对于勒索软件保护,我希望仅修改现有文件被认为是危险的。

我想到的第一个问题是:为什么我的申请被认为是有害的,因此被阻止了?

我已经进行了广泛的研究以获得答案,但是找不到任何有帮助的内容:

  1. Mircosoft的Web资源描述了哪些应用程序被认为是有害的以及为什么找不到它-只是在这里猜测。

  2. 使用扩展验证证书(有助于抑制SmartScreen警告)对我的应用程序签名不会更改Windows Defender的行为。

  3. 我让Windows App认证套件分析安装程序-报告了一些警告和一个严重错误。我修复了该工具包抱怨的所有问题(关于/ SAFESEH的警告除外,这对于InnoSetup而言是不可能的),但是这并没有改变Windows Defender关于访问阻止的行为。

因此,我的提炼问题是:如何以有效方式绕过Windows Defender的设置和应用程序访问阻止?

为了提供对该问题的见解并为实验提供基础,我在C#中设置了一个小样本应用程序

  1. 在公用桌面路径,用户的桌面路径,公共文档路径和用户的文档路径中创建新的目录(然后删除)
  2. 通过InnoSetup脚本捆绑到已签名的安装程序

使用Visual Studio生成解决方案,并使用InnoSetup打包生成,可以很容易地通过启用“ 受控文件夹访问”来重现行为。(确保查看README.md以获取有关构建步骤的描述!)

请检查示例项目