小编BK_*_*BK_的帖子

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

我有一个用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以获取有关构建步骤的描述!)

请检查示例项目

c# delphi security windows-defender controlled-folder-access

6
推荐指数
0
解决办法
251
查看次数

Crash Reporter,带有使用本机组件的C#应用​​程序的反馈系统

目标

我正在寻找可以监控我的C#以防止故障,特别是崩溃的工具/框架.

背景资料

我有一个C#应用程序使用Chromium Embedded Framework来托管可以访问OS功能的Web应用程序.因此,应用程序是C#和本机C/C++代码的混合.此外,应用程序需要同时运行多个进程才能正常运行.

如果某些过程出现问题,则应用程序很容易失效.这可能是由于 - C/C++中的内存故障 - 内存不足 - 编程错误 - 等等.

a)了解野外发生的问题,以及b)能够解决问题,我想找一些崩溃记者,

  1. 理想情况下,不仅包括静音报告,还有一些反馈系统,用户可以在其中发表评论
  2. 收集尽可能多的崩溃信息(例外,每个进程的callstack,可选的内存转储)
  3. 由于最严重的问题导致进程崩溃,因此不应将崩溃防护/报告器托管在进程内,而应作为监视软件的外部程序
  4. 我愿意尝试不是单独进程的工具,如果他们执行一些魔法来避免与整个过程一起被杀死

到目前为止的调查

  1. 到目前为止,我已经看过sentry.io,但不幸的是,Sentry启用的应用程序只是在没有任何报告或崩溃检测的情况下退出内存故障.
  2. 我已经检查了sentry.io的替代方案,但是有大量的框架我无法评估所有.
  3. 我找到了类似线程的StackOverflow

    https://stackoverflow.com/questions/755847/crash-reporting-watchdog-for-when-my-application-locks-up-on-a-customers-machin
    https://stackoverflow.com/questions/32502190/how-can-i-monitor-an-application-crash-from-a-separate-process
    https://stackoverflow.com/questions/78048/best-way-to-detect-an-application-crash-and-restart-it?noredirect=1&lq=1
    
    Run Code Online (Sandbox Code Playgroud)

但这些似乎并没有帮助我.

如果有人有这种问题的经验并指出它的工具/框架,我会很高兴.

最好的问候,cd_

c# c++ crash-reports crash-dumps chromium-embedded

6
推荐指数
0
解决办法
116
查看次数

在Windows 10上使用字体时,为什么GDI +会过多地占用内存?

与Windows 10相比,在Windows 7/8 / 8.1上进行监视时,我的应用程序显示出非常不同且非常烦人的内存占用。我将其归结为字体使用情况:

与其花费50-70 MB来枚举已安装的字体及其属性(就像该应用程序在Windows 7/8 / 8.1上所做的那样),不如花费大约500 MB来完成同一工作,这大约是它的十倍。

在谈到所需的内存时,我总是指进程的虚拟大小。

知道为什么会这样吗?似乎有些缓存在Windows 10上很流行。有什么好的解决方法?目前,我计划将所有GDI +字体处理调用映射到GDI调用,因为这些不会显示这种奇怪的行为。

(我发现Windows 10上的.NET FontFamily内存泄漏,但是没有有用的答案。)

为了缩小范围,我创建了两个示例程序。您可以运行程序并自行比较进程的VirtualSize。

C#示例仅枚举所有已安装的字体并实例化一种字体,同时适当处理非托管对象:

int i = 0;
foreach (FontFamily fontfamily in FontFamily.Families)
{
    i++;
    try
    {
        Font f = new Font(fontfamily, (float) 8.0, FontStyle.Bold);
        Console.WriteLine("Created Font #{0} {1} ", i, f.Name);

        f.Dispose();
        f = null;
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception while creating Font {0} {1}", fontfamily.Name, ex.ToString());
    }
    fontfamily.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

Delphi示例更加复杂,使某些.NET内部结构更加明显。此外,您可以使用它进行不同的测试,以更出色的方式测量内存消耗。

program FontTests01;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  Classes,
  Windows, …
Run Code Online (Sandbox Code Playgroud)

c# delphi fonts gdi+ windows-10

5
推荐指数
0
解决办法
319
查看次数

Gradle Kotlin DSL:检查“可用的新库版本”不起作用

我已将 Gradle 构建脚本转换为 Kotlin DSL。由于我从一个小型新项目开始,一切都按计划进行。当引用越来越多的依赖项时,我想将它们的版本号作为常量放入脚本中,特别是对于那些在多个地方使用的版本。

在我的 app/build.gradle.kts 中,我基本上有以下内容:

dependencies {
    implementation("androidx.appcompat:appcompat:1.0.0")
    ...
}
Run Code Online (Sandbox Code Playgroud)

Android Studio 检查告诉我,我应该升级到 1.1.0。我把它改为

val appCompat = "1.0.0"
dependencies {
    implementation("androidx.appcompat:appcompat:$appCompat")
    ...
}
Run Code Online (Sandbox Code Playgroud)

但现在我不再得到那个检查提示了。

我将我的 Kotlin 脚本与我在Sunflower 参考项目中找到的脚本进行了比较,发现它可以在那里工作。所以,我尝试定义额外值

extra.apply {
    set("appCompat", "1.0.0")
}
implementation("androidx.appcompat:appcompat:${extra["appCompat"]}")
Run Code Online (Sandbox Code Playgroud)

但也没有得到检查提示。

在我看来,使用 Kotlin DSL 的检查似乎被破坏了。你同意吗?或者你有一个可行的设置吗?

dependencies android gradle kotlin gradle-kotlin-dsl

5
推荐指数
1
解决办法
1926
查看次数