【问题标题】:Compiled executable seen as Trojan threat编译后的可执行文件被视为木马威胁
【发布时间】:2014-12-05 13:46:46
【问题描述】:

我已经将一个非常简单的 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”木马。

我可以更改或添加什么到代码中,这样它就不会被认为是病毒。

【问题讨论】:

  • 获得更好的防病毒软件。
  • 我认为这无论如何都行不通。第一个调用为第一个命令 shell 设置%PATH%,第二个调用启动第二个命令 shell,它具有原始的%PATH%。此外,对于这样一个微不足道的程序,我什至不会使用 CRT。使用CreateProcess 并传递适当的环境。

标签: c++ c antivirus trojan


【解决方案1】:

找出的一种方法是简单地省略其中一行来找出触发的是哪一行(或者两者都触发)。话虽如此,您的代码并不是很安全,因为它依赖于计算机的路径设置来指向正确的 node 可执行文件。

此外,您可能需要检查在第一次调用 system 运行后,您的路径设置是否确实存在。

【讨论】:

  • 非常有帮助!我会按照你的建议进行调试。对于大多数病毒扫描程序来说,更改路径变量可能是一个危险信号。
【解决方案2】:

这比您想象的要简单,有时当我们在处理套接字时,防病毒软件可能会抱怨。如果您尝试更改系统中的某些内容,也会发生同样的情况,可能它将您的应用程序识别为线程不是因为它有病毒,而是因为防病毒软件的行为分析,因为它有多种检测方法,例如签名,等等。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2010-10-21
    • 1970-01-01
    • 2021-02-22
    • 2010-11-28
    • 2011-09-12
    相关资源
    最近更新 更多