我的程序被avast反封锁

我是一名业余程序员,因为一个大问题我正在陷入绝望和疯狂:我的大部分程序都被avast反病毒拦截,有些则不是,我不明白为什么。 我试图调查的越多,我就越不了解问题所在。

我请求你的帮助来找到一个解决方案,以便我的程序不再被阻止,或者作为默认,至少有一些强大的线索可以解释为什么它可能是这种情况。 网络上已经有很多关于这方面的话题。 然而,他们大多只给出一些肤浅的答案:他们只是解释了反病毒如何与签名和检测启发式技术协同工作,或者说您只需在白名单中添加违规应用程序而不询问任何其他问题。 虽然这当然是正确的,但我的感觉并不是可以接受的答案,因为我仍然留下自己的程序,如果没有任何具体的想法开始调查,它们就会拒绝工作。

首先,阻止我的程序的唯一防病毒是avast 7.x. 没有其他的反病毒软件看到任何不方便运行我的软件。 其次,我自己并没有死心塌地; 它安装在朋友的机器上。 我有Windows 7,他有Windows XP。 我完全确定问题只是avast:当它暂时被禁用时,或者如果程序被添加到它的白名单中,所有事情都可以按预期很好地工作。

三个不同的计划陷入困境:

  • 一个文本编辑器,目标是在保持简单,高效和可定制的同时替换Windows记事本
  • 一个非常简单易用的小型业余音频播放器
  • 一个在线游戏平台的客户端程序,目前拥有超过1000个用户
  • 第一个是开源的,如果需要的话,我可以给出可执行文件和源代码的链接。 另外两个是封闭源代码,但可以自由使用,我只能给出当前版本的可执行文件的链接。 这三个程序之间唯一明显的共同点是我作为开发人员,编译他们的Windows 7机器,MinGW / GCC编译器系列,他们都是没有任何框架的win32 GUI应用程序(没有MFC,没有WPF,没有QT,WXWidgets或其他;只是纯粹的win32 / C GUI应用程序)

    以下是我的观察,尽管到目前为止:

  • 我的文本编辑器的版本1.1,1.2.1和1.3被阻止。 它们使用C而不是C ++,已经使用GCC 3.4.5以unicode模式编译,并分发到可移植的zip文件中(通过便携式,我只是表示不需要安装程序,也不需要安装)
  • 相同文本编辑器的版本1.4.1不会被阻止。 它已经用GCC 4.7.2进行编译,仍然在C而不是C ++,仍然处于unicode模式,并且仍然是一个可移植的zip文件
  • 我的音频播放器的所有版本都被阻止; 他们在C ++中启用了0x功能,已经由ANSI模式下的GCC 4.7.2编译,并以便携式zip文件分发
  • 我的游戏的当前版本1.7.2未被阻止。 它在C中,已经在ANSI模式下用GCC 3.4.5进行编译,并且作为inno-setup 5安装程序分发。
  • 我的游戏的新版本,2.0.0,目前是一个私人测试版,已被封锁。 它在C ++中启用了0x功能,已经在unicode模式下用GCC 4.7.2编译。 我将它与我的私人测试团队分享为私人保管箱文件夹中的zip文件
  • 问题是由avast 7.x自动沙箱引起的。 当您尝试启动avast不喜欢的程序时,会发生以下情况:

  • 用户双击或在可执行文件上点击输入
  • 该程序启动,但几乎是瞬间和强行崩溃的avast
  • 出现一个弹出窗口,并说:avast已将此程序放入他的沙盒中,因为他的声望很低
  • 如果点击弹出的继续按钮,程序的执行将重新启动并正常工作
  • 如果没有点击继续按钮,Windows资源管理器会冻结,可执行文件将保留在任务管理器中,并且总是使用76 KB的RAM,而无法杀死; 最后约5分钟后,Windows资源管理器解冻,程序重新启动并正常工作
  • 这是无法接受的。 我的程序的新手用户,特别是游戏,不知道反病毒是如何工作的; 不知道如何将其放入白名单以及为何将其解除封锁; 不知道如何更改其防病毒设置; 如果他们看到弹出窗口,就不会理解它,并最终会害怕或失望,因为如果不知道原因,他们就无法演奏; 如果他们没有看到弹出窗口,我不能指望他们用一台半冻电脑等5分钟。 每次他们想玩。

    从那里,我做了以下扣除:

  • 我的机器本身不受感染,没有病毒注入我分发的可执行文件; 否则,所有最近的程序都会被阻止; 我有两个(我的玩家和我的游戏的新版本),而另一个不是(我的文本编辑器的最新版本)。 游戏的1.7.2已于2012年3月编译,而文本编辑器的1.4.1则自2012年10月起。
  • 根据相同的推理,最新版本的GCC 4.7.2并非如此; ANSI与unicode编译相同。
  • minGW C ++运行时,作为自动链接DLL分发,在所有用GCC 4.7.2编译的C ++应用程序中是强制的,可能不是原因,因为许多知名程序都使用它; 和我的文本编辑器被阻止,并在C中,因此不使用它。
  • 我的音频播放器和我的游戏具有共同的音频库; 这稍后不是原因,因为我的游戏的1.7.2版本和最新的私人测试版本不起作用。 当然,该音频库也用于许多其他已知或未知的应用程序中,这些应用程序未被阻止。
  • 玩家和游戏都使用winsock访问网络; 所以同样的道理也不是原因
  • 如果它确实是avast的声誉,为什么我的文本编辑器的版本1.4.1没有被封锁,只被下载了大约70次,而被阻止的版本1.3下载了300多次? IT看起来完全不合逻辑。 70名用户是否足以宣称声誉? 300用户更多吗? 我真的不这么认为......可能是数十万用户的关键群体是必要的。
  • 除此之外,我也认为我将程序作为便携式压缩文件发布的事实可能是avast阻止的原因,相反,程序安装在程序文件中的事实可能是信任它的一个理由更多。 所以我做了一个简单的体验:我为我的游戏的beta 2.0.0编译了一个新的inno-setup 5安装程序,并为我的文本编辑器1.3版本编译了一个,并发现安装程序本身被阻止!

    我与我的朋友做了另一次体验,在那里我试图根据使用MessageBeep(MessageBox也被阻止!)来准确找到程序崩溃的地方。 我没有注意到任何问题。 第一次在登录对话框中调用SetDlgItemText时会阻止游戏,但如果我删除所有SetDlgItemText,则会进一步阻止它。 在文本编辑器中,它在填充菜单栏时被阻止...

    我的结论是,在我的游戏的新版本,我的文本编辑器的旧版本以及我的音频播放器中,avast不喜欢这样的东西。 在我的文本编辑器的最新版本中没有的东西。 会是什么呢 ? 你有任何线索吗? 你有没有想过如何才能找到它是什么,以便我希望能够修复它? 是否只有一种方法来分析这样的问题,或者是由avast搞砸的洞世界?

    请注意,我是单身人士,而不是公司,所有这些程序都可以免费使用,我没有支付任何IDE来开发它们,并且在用户使用它们时我没有付费,所以我假设证书可能根本无法承受。 此外,我不知道这是否是一个真正的解决方案,如何签署使用GCC编译的应用程序,我真的不想切换到像MSVC那样的“usineàgaz”。 如果有其他解决方案,即使是非常肮脏的解决方案,我宁愿强烈遗忘该选项。

    谢谢你的阅读。


    增加所有AV软件信心的一个好方法是对您的代码进行数字签名。 Thawte拥有价格低于100欧元/年的最便宜的公认证书。

    - 近两年后@ Herr_Doktor的评论更新 -

    最近我遇到了一个新的情况,当代码签名不是一个选项时 - 我在php中为Joomla写了开源代码。 在我收到第一个迹象表明Avast将我的文件标记为(false)正面消息后,我联系了他们,他们在几个小时内将我的文件列入了白名单。

    为了使我的生活更轻松,我创建了一个单独的文件,其中包含所谓的“危险”功能,以便将来对程序的更改不需要重新提交白名单。

    可能他们的反应速度有助于读取一个简短的php文件比反编译编译代码更快的事实; 尽管如此,他们善良,快捷,有效。


    AV程序通过分析已知“不良行为”模式的文件来工作。

    如果您的程序取消引用指针,将200个字节写入100个字节的缓冲区或类似内容,则可能会生成类似于已知攻击签名的代码。 (因为大多数攻击都会利用这类编程错误)

    您应该调试您的代码(如果在Linux上尝试使用valgrind或efence)并确保内存处理正确。


    您可以对这篇文章感兴趣:

    http://www.codeproject.com/Articles/71128/The-Case-of-Evil-WinMain

    它说明了在处理链接一个简单的C运行时库的小程序时,防病毒软件可以如何坚持下去。

    你唯一能做的就是向防病毒制造商发出问题,希望他们能够从中获得公平的行为。

    链接地址: http://www.djcxy.com/p/27841.html

    上一篇: My programs are blocked by avast anti

    下一篇: Where to obtain a particular virus for debugging purposes?