2014-12-05 30 views
3

我已经转换一个非常简单的bat文件到一个EXE文件。编译的可执行文件被视为木马威胁

我的C文件看起来像这样:

#include <stdlib.h> 
int main(int argc, char const *argv[]) { 
    system("set PATH=%PATH%;%CD%\bin\ffmpeg"); 
    system("node server.js"); 
    return 0; 
} 

我resources.rc看起来是这样的:

#include <windows.h> 

A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "favicon.ico" 

我编译它使用:

windres -i resource.rc -o resource.o 
tcc-o mediacenterjs.exe main.c resource.o 

这个伟大的工程!但Avast和其他几个反病毒扫描器将我的EXE视为威胁。 “I-Worm/Nuwar.L”特洛伊木马是精确的。

我能更改或添加的代码,所以它不会拿起一个病毒。

+4

获得更好的杀毒软件。 – rubenvb 2014-12-05 13:49:32

+1

我认为这不会起作用。第一次调用为第一个命令shell设置'%PATH%',第二次调用启动第二个具有原始'%PATH%'的命令shell。此外,对于这样一个微不足道的程序,我甚至不会使用CRT。使用'CreateProcess'并传递适当的环境。 – MSalters 2014-12-05 15:44:18

回答

1

一个办法,找出是简单地忽略其中一条线路,找出哪一个是触发(或者如果它是两者)。这就是说,你的代码并不是非常安全,因为它依赖于计算机的路径设置来指向正确的node可执行文件。

此外,您可能要检查,看看你的路径设置在第一次调用system运行后实际存在。

+0

非常有帮助!我会像你所建议的那样调试。改变路径变量可能是大多数病毒扫描程序的红旗。 – jansmolders86 2014-12-05 14:40:56

1

它比你想象的更简单,有时候当我们用插座以及防病毒可能会抱怨搞乱。如果您尝试更改系统中的某些内容,可能会发生同样的情况,可能会将您的应用程序识别为线程,而不是因为它具有病毒,但由于防病毒的行为分析,因为它有几种检测方法,如签名, 等等。

你可以做的事情是调试你的应用程序,以便找到问题出在哪里,也许它在system函数中,该函数直接要求系统更改可能对系统至关重要的内容(防病毒不知道或不知道),也许你可以使用API​​以另一种方式处理。