卡巴斯基将我的控制台应用程序检测为特洛伊病毒

14

我已经搜索了一段时间,但没有找到任何适合这个问题的答案。 我注意到我的杀毒软件开始将我的应用程序检测为特洛伊木马。 我的杀毒软件是卡巴斯基2013,它检测到的是这种类型的特洛伊木马: http://www.securelist.com/en/descriptions/HEUR:Trojan.Win32.Generic

我的应用程序只做了三件事:

  • 检查计算机是否连接了Dongle Key

  • 使用Dongle Key解密dll(这是一个具有自定义入口点的wpf类库)

  • 通过自定义入口点启动dll。

问题在于类似的代码在类似的应用程序中运行良好,但在这种情况下,我的杀毒软件将其检测为特洛伊木马。我注意到有问题的代码部分是这个:

    public static void ExecuteAssembly(byte[] Bytes)
    {
        Assembly a = Assembly.Load(Bytes);
        foreach (Type type in a.GetTypes())
        {
            try
            {
                MethodInfo main = type.GetMethod("Main");
                if (main != null)
                    main.Invoke(type, new object[] { });
            }
            catch { }
        }
    }

我该怎么做才能避免这个问题?我没有使用特洛伊木马,也无法避免使用这部分代码来启动我的动态链接库。所以我不认为代码有问题。 提前感谢。

Mattia

编辑:

我已将文件上传到Egor告诉我的网站。 这是结果。 https://www.virustotal.com/en/file/7ee30172ffda51f4b99700d10df2816403cbdc8f17bfe90f7deef81a88639da3/analysis/1369058630/

你能给我什么建议吗? 提交错误的阳性文件或采取更改代码等不同的措施? 我对这类问题还是新手,不知道该怎么办。 再次感谢!


难道没有其他方法可以以编程方式启动DLL吗?也许是通过运行RunDLL.EXE的系统调用,如果它仍然存在的话。 - Justin Morgan
1
让我想起了Avast在沙盒中运行我的应用程序并在运行10-20秒后毫无警告地终止它们的时候。我不再遇到这些问题了,而且我也没有改变我的代码。 - Nolonar
3
我建议你把它简化成尽可能简单的演示,并提交给卡巴斯基进行审查。 - 500 - Internal Server Error
1
你为什么这么在意卡巴斯基?一些杀毒软件会出现误报,这是很正常的。其他杀毒软件怎么说呢?可以参考一下 VirusTotal 上的结果。 - Egor Skriptunoff
1
@user2394667 - 将您的应用程序提交给卡巴斯基作为误报。同时,设置本地副本以忽略您的应用程序。如果您需要使用特定代码,我不确定您想让我们帮助您解决什么问题。 - Security Hound
我不明白为什么在另一个应用程序中使用不同的DLL时,相同的代码会出现问题。因此,我想问一下可能出现的问题以及如何解决它。感谢您的回答,我会在回到办公室后尝试解决。 - Pliskin
2个回答

5

4
您遇到了一种启发式检测 - 意味着卡巴斯基已经评估了关于您的dll的每个正面和负面属性(从导入表到文件大小和实际调用的函数),并决定其等级低于良好可执行文件的推荐等级。
我猜测样本代码是导致检测的原因 - 这意味着您删除了此代码部分,突然卡巴斯基就认为它是安全的。如果是这样,您可以通过使用反射调用Assembly.Load来欺骗卡巴斯基扫描程序。(这可能是被检测出的原因 - 恶意软件通常会下载更多的模块作为dll,并从内存中加载它们)
typeof(Assembly).GetMethod("Load").Invoke(null,new object[] {Bytes});

1
我不再参与这个项目了(我已经辞职了),但这将是正确的解决方案。谢谢! - Pliskin

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