【问题标题】:My C# app is getting flagged by anti-virus apps. How do I figure out why? [closed]我的 C# 应用程序被防病毒应用程序标记。我怎么知道为什么? [关闭]
【发布时间】:2012-03-07 01:13:10
【问题描述】:

我有一个 C# 应用程序被多个防病毒应用程序(迄今为止的 AVG 和 Norton)标记为“行为可疑”。我对此没有任何经验,而且我认为有很多事情可能被认为是“可疑的”(注册表访问、使用命名管道的本地服务的 IPC、将文件复制到本地应用程序数据文件夹等),但我不知道从哪里开始。

请注意,这些应用并不是说我的应用是病毒或感染了病毒,而是说它是可疑的。

我如何才能知道我的应用程序的哪个部分导致了这些问题?

【问题讨论】:

  • 您使用网络上的代码片段吗?我下载了几次被我的防病毒应用程序删除的程序源。有时这是一个错误的警报。尝试联系这些公司。我的一个应用也被这样对待。
  • 如果应用程序编写得过于巧妙,即多态性或反射或代码修改了它自己的行为,那么它可能会被某些防病毒软件标记。在安装程序中包含空版本的数据文件可能会消除您提到的最后一个问题。
  • 又一个与开发完全相关的问题被@casperOne 不公正地关闭了......

标签: c# antivirus false-positive


【解决方案1】:

我会推荐故障排除步骤。

如果您可以在您的开发机器上可靠地重现问题,请开始注释掉代码部分,直到它停止发生。然后开始取消注释,直到它再次发生。这至少会缩小导致问题的代码部分。

【讨论】:

  • 我想知道如何在一个相当复杂的应用程序中随机注释掉一些代码。 (当然要编译它。)
  • @DennisTraub 是的,这很快就会变得一团糟。例如,命名管道 IPC 是应用程序的基础——我不可能只是将其注释掉,而应用程序的其余部分仍然可以工作。
  • @Daniel:所以制作应用程序的副本并删除所有不是命名管道 IPC 的内容。 IPC 非常复杂,并且充满了潜在的安全漏洞。发送二进制消息通常更简单,也更容易证明是正确的。然后您可以在消息中使用随机数据进行测试,以确定是否是命名管道本身触发了恶意软件标志。
  • @BenVoigt “发送二进制消息”是什么意思?
  • @Daniel:糟糕,我将“IPC”与“RPC”混淆了(这是一个分层在 IPC 机制之上的函数调用)。您可能已经在使用二进制消息,这很好。
【解决方案2】:

您需要联系防病毒公司以将您的应用程序列入白名单。不幸的是,这需要分别为它们中的每一个完成,并且它们有自己的过程。这是AVGNorton 的链接。

此过程通常需要时间,因此您可能需要考虑这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 2017-04-19
    相关资源
    最近更新 更多