我的程序被avast反封锁
我是一名业余程序员,因为一个大问题我正在陷入绝望和疯狂:我的大部分程序都被avast反病毒拦截,有些则不是,我不明白为什么。 我试图调查的越多,我就越不了解问题所在。
我请求你的帮助来找到一个解决方案,以便我的程序不再被阻止,或者作为默认,至少有一些强大的线索可以解释为什么它可能是这种情况。 网络上已经有很多关于这方面的话题。 然而,他们大多只给出一些肤浅的答案:他们只是解释了反病毒如何与签名和检测启发式技术协同工作,或者说您只需在白名单中添加违规应用程序而不询问任何其他问题。 虽然这当然是正确的,但我的感觉并不是可以接受的答案,因为我仍然留下自己的程序,如果没有任何具体的想法开始调查,它们就会拒绝工作。
首先,阻止我的程序的唯一防病毒是avast 7.x. 没有其他的反病毒软件看到任何不方便运行我的软件。 其次,我自己并没有死心塌地; 它安装在朋友的机器上。 我有Windows 7,他有Windows XP。 我完全确定问题只是avast:当它暂时被禁用时,或者如果程序被添加到它的白名单中,所有事情都可以按预期很好地工作。
三个不同的计划陷入困境:
第一个是开源的,如果需要的话,我可以给出可执行文件和源代码的链接。 另外两个是封闭源代码,但可以自由使用,我只能给出当前版本的可执行文件的链接。 这三个程序之间唯一明显的共同点是我作为开发人员,编译他们的Windows 7机器,MinGW / GCC编译器系列,他们都是没有任何框架的win32 GUI应用程序(没有MFC,没有WPF,没有QT,WXWidgets或其他;只是纯粹的win32 / C GUI应用程序)
以下是我的观察,尽管到目前为止:
问题是由avast 7.x自动沙箱引起的。 当您尝试启动avast不喜欢的程序时,会发生以下情况:
这是无法接受的。 我的程序的新手用户,特别是游戏,不知道反病毒是如何工作的; 不知道如何将其放入白名单以及为何将其解除封锁; 不知道如何更改其防病毒设置; 如果他们看到弹出窗口,就不会理解它,并最终会害怕或失望,因为如果不知道原因,他们就无法演奏; 如果他们没有看到弹出窗口,我不能指望他们用一台半冻电脑等5分钟。 每次他们想玩。
从那里,我做了以下扣除:
除此之外,我也认为我将程序作为便携式压缩文件发布的事实可能是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?