编译后的可执行文件被视为特洛伊木马威胁。

3

我已经将一个非常简单的批处理文件转换成了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
1
我认为这种方法不会起作用。第一次调用设置了第一个命令行窗口的%PATH%,而第二次调用启动了一个具有原始%PATH%的第二个命令行窗口。此外,对于如此简单的程序,我甚至不会使用CRT。使用CreateProcess并传递适当的环境变量。 - MSalters
2个回答

1
一种找出问题的方法是简单地省略其中一行,以确定是哪一个触发了问题(或者两个都有)。话虽如此,你的代码并不是非常安全,因为它依赖于计算机的路径设置来指向正确的 `node` 可执行文件。
此外,你可能需要检查一下在第一次调用 `system` 运行后是否实际上保留了路径设置。

非常有帮助!我会像你建议的那样进行调试。路径变量上的更改可能会引起大多数病毒扫描器的警报。 - jansmolders86

1
这比你想象的要简单,有时候当我们使用套接字时,杀毒软件可能会发出警报。如果您尝试更改系统中的某些内容,可能会发生同样的情况,它可能将您的应用程序识别为线程,这不是因为它具有病毒,而是由于杀毒软件的行为分析,因为它有多种检测方式,例如签名等。
您可以调试应用程序以找到问题所在,也许是在system函数中直接向系统请求更改可能对系统至关重要的内容(杀毒软件并不知道),也许您可以使用API以另一种方式处理此问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接