基本上,我只是用Malwarebytes扫描了我的计算机(在运行之前更新了定义),并说它用C#编写的"helloworld"程序有一个木马.
我知道这是一个误报,因为我只在2-3天前编写了该程序,并在一个小型教程网站上制作了我信任的程序.我是C#的新手,但我看不到任何可以发出木马警告的东西.

程序标记可执行文件,但不标记源文件.
using System;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(string[] args)
{
Console.WriteLine("\n\tHello World!");
Console.WriteLine("This is my first C# program.\nI'm so proud of myself!");
Console.WriteLine("\tTeehee!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是用Notepad ++编写的代码,它是从命令行运行的(实际上是Cygwin).为什么会标记这个?作为一个崭露头角的C#程序员,我应该知道这件事吗?
我经常看到它发生:我在Delphi中编写应用程序,当我编译它时,病毒扫描程序告诉我,我已经创建了病毒,然后立即再次删除可执行文件.通过执行完全重建,首先删除*.dcu文件,有时只是等待,这很烦人但很容易修复.
据我所知,它发生在德尔福6,7,2005和2007年.赛门铁克,卡巴斯基,迈克菲和NOD32都对报告这些误报感到内疚.我知道这是因为Delphi为其DCU文件添加了时间戳,这些时间戳最终在最终的可执行文件中,显然似乎是一些随机病毒签名的一部分.
我不想禁用病毒扫描程序,即使对于单个文件夹或文件也是如此.我并不是真的想要解决方案,但我想知道以下内容:
我刚遇到一个烦人的问题.突然,Avira AntiVir开始将我软件中的一个可执行文件标记为病毒.
由于几乎所有用户的默认操作都是单击确定,Avira建议将病毒置于隔离区,因此我的大多数用户都在删除此可执行文件.
好吧,让我们不要傲慢,检查一下我是否确实没有受到感染.我将文件发布到http://www.virustotal.com,并且从所有反病毒中只有Avira将其标记为已感染.此外,我用两种不同的抗病毒扫描我的电脑,它很干净.
我已经向我的用户发了一封邮件,说明发生了什么,但这是我支持的开销,我真的不想要.
好的,问题是:有没有办法避免这种行为?除了签署文件之外,我想不出任何其他方式(不知道它是否会解决),但让我们看看你是否有任何创意.
Valgrind线程错误检测工具Helgrind的文档,可在此处找到
警告说,如果你使用GCC来编译你的OpenMP代码,GCC的OpenMP运行时库(libgomp.so)将导致混乱的数据争用的误报,因为它使用原子机器指令和Linux futex系统调用而不是POSIX pthreads原语.它告诉您,您可以通过使用--disable-linux-futex配置选项重新编译GCC来解决此问题.
所以我尝试了这个.我使用配置选项编译并安装到本地目录(〜/ GCC_Valgrind/gcc_install)一个新的GCC版本4.7.0(撰写本文时的最新版本)--disable-linux-futex.然后我创建了一个没有可见数据竞争的小型OpenMP测试程序(test1.c):
/* test1.c */
#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_THREADS 2
int a[NUM_THREADS];
int main(void) {
int i;
#pragma omp parallel num_threads(NUM_THREADS)
{
int tid = omp_get_thread_num();
a[tid] = tid + 1;
}
for (i = 0; i < NUM_THREADS; i++)
printf("%d ", a[i]);
printf("\n");
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我编译了这个程序如下
~/GCC_Valgrind/gcc_install/bin/gcc -Wall -fopenmp -static -L~/GCC_Valgrind/gcc_install/lib64 -L~/GCC_Valgrind/gcc_install/lib -o test1 test1.c
Run Code Online (Sandbox Code Playgroud)
但是,我得到了30个误报数据竞赛报告! …
我有一个C#程序的安装程序,我把它上传到我的网站,但每当我尝试用chrome或IE下载它时,我得到" 我的文件*通常不会下载,可能会很危险." 如果您单击一个小箭头并从菜单中选择"保留",则只能保留它.只有十分之一的用户能够获得我的计划.我怎么能解决这个问题?我听说过数字代码签名,但每年数百美元.这对我来说真的不是一个选择.制作MSI安装程序或将其放在软件网站上会有帮助吗?
internet-explorer message google-chrome download false-positive
我有一个exe使用 PyInstaller 生成的文件的 AntiVirus 误报问题,通过搜索,我发现这个答案包含重新编译引导加载程序,但我无法完成。这是我到目前为止尝试过的:
python ./waf distclean all得到错误can't open file './waf': [Errno 2] No such file or directory或者也许有另一种方法可以使可执行文件不被检测为病毒/木马。
使用的软件包:PyQt5、pysnmp、pandas、numpy。
编辑:
感谢@Ana Knickerbocker 的回答,我能够取得进展,现在当我运行时python ./waf all出现错误:
Python Version : 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)]
Checking for 'msvc' (C compiler) : not found
Checking for 'gcc' (C compiler) : not found
Checking for 'clang' …
以下C++ 11代码是我认为在clang中触发误报的最小示例:
#include <iostream>
#include <list>
#include <memory>
class ElementType {};
int main(int argc, const char * argv[]) {
std::list<std::unique_ptr<ElementType>> theList(5);
theList.pop_front();
for (const auto &element: theList) { // (*)
std::cout << "This should be fine." << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在由星号(*)标记的线上,铿锵声分析仪声称
... filePath ... /main.cpp:21:29:释放后使用内存(在调用'begin'时)
据我解释,这段代码是无害的,但是clang忽略了这样的观点:std::list<T>::pop_front()不仅要调用它的元素的析构函数,还要调整它的位置std::list<T>::begin().更换呼叫pop_front通过pop_back使得该分析仪警告消失,甚至被替换它erase(theList.begin())使它走出无警告.
我是否遗漏了某些东西或者我是否真的偶然发现了一个错过的铿锵声?
供参考:这些结果来自Mac OS X 10.9.2上的XCode 5.1.1(5B1008),
$ clang --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: …Run Code Online (Sandbox Code Playgroud) 在春季关于测试的文档中,它指出:
在测试ORM代码时避免误报
当您测试涉及ORM框架(如JPA或Hibernate)的代码时,请在更新会话状态的测试方法中刷新基础会话.无法刷新ORM框架的基础会话可能会产生误报:您的测试可能会通过,但相同的代码会在实时生产环境中引发异常.在下面基于Hibernate的示例测试用例中,一个方法演示了误报,另一个方法正确地暴露了刷新会话的结果.
有人可以解释为什么我需要调用flush吗?
我们提供可从我们的网站下载为InstallShield EXE的Windows程序.
当运行IE9的人试图下载并运行我们的软件时,他们会在屏幕底部看到以下消息:
PROGRAMNAME.exe is not commonly downloaded and could harm your computer.
[DELETE] [ACTIONS] [VIEW DOWNLOADS]
Run Code Online (Sandbox Code Playgroud)
它表明:
我们做了所有这三件事.我们的EXE使用authenticode签名进行数字签名(警告消息上方的栏是橙色,而不是红色,表示IE9识别并验证了签名).我们尝试过的任何防病毒程序都未将我们的下载检测为恶意软件.我们申请并收到了Windows徽标.
到目前为止,我们的大多数客户都没有使用IE 9.但这对那些做的人来说非常麻烦.我们还有什么办法可以解决这个问题,还是我们只需要等到一大批客户下载这个软件才能消除此消息?
(这是否意味着当我们发布新版本时,所有IE 9用户将再次收到此消息,直到有足够的人下载它?)
更新2011-06-14:
谢谢,@ EricLaw-MSFT.URL是http://dakim.dakiminc.netdna-cdn.com/DakimBrainFitness.exe.(它可以在http://www.dakim.com上的"下载免费试用版"按钮中找到.)
我们只提供了一段时间的可下载试用版.我们的主要分发方法是安装DVD.
windows false-positive malware-detection internet-explorer-9
我写了一个分类器(高斯混合模型)来分类五个人类行为.对于每次观察,分类器计算属于群集的后验概率.
我想要用阈值参数化我的系统的性能,值为0到100.对于每个阈值,对于每个观察,如果属于一个簇的概率大于阈值,我接受分类器的结果否则我丢弃它.
对于每个阈值,我计算真阳性,真阴性,假阳性,假阴性的数量.
比我计算两个函数:灵敏度和特异性为
sensitivity = TP/(TP+FN);
specificity=TN/(TN+FP);
Run Code Online (Sandbox Code Playgroud)
在matlab中:
plot(1-specificity,sensitivity);
Run Code Online (Sandbox Code Playgroud)
有ROC曲线.但结果并不是我所期望的.
这是丢弃,错误,纠正,敏感性和特异性功能的图,改变了一个动作的阈值.

这是一个动作的ROC曲线图

这是同一动作的ROC曲线的主干

我错了,但我不知道在哪里.也许我错误地计算了FP,FN,TP,TN,特别是当分类器的结果小于阈值时,所以我丢弃了.当丢弃时我必须增加什么?