我一直在寻找,但我没有找到任何合适的答案。 我注意到我的防病毒软件开始将我的应用程序检测为木马。 我的防病毒软件是卡巴斯基2013,这是它检测到的木马类型。 http://www.securelist.com/en/descriptions/HEUR:Trojan.Win32.Generic
我的申请只做了三件事:
检查加密狗密钥是否已连接到计算机
使用加密狗密钥解密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 { }
}
}
我该怎么做才能避免这个问题?我没有做木马,我无法避免使用这部分代码来启动我的dll。所以我认为代码不是问题。 提前谢谢。
马蒂亚
编辑:
我已将文件上传到Egor告诉我的网站。 这是结果。 https://www.virustotal.com/en/file/7ee30172ffda51f4b99700d10df2816403cbdc8f17bfe90f7deef81a88639da3/analysis/1369058630/
你能给我什么建议? 要将文件提交为误报或不同的更改代码? 我是这类问题的新手,所以我不知道该怎么做。 再次感谢!
答案 0 :(得分:5)
虽然我无法通过更改代码为您解答如何解决问题,但我可以告诉您,您不是第一个遇到此问题的人。我之前用自己的一个程序遇到过它,似乎有些游戏被卡巴斯基检测为特洛伊木马。像其他人在评论中所说,你可以将此作为假阳性提交给卡巴斯基。我按照此链接上的说明操作:How to report undetected viruses or false positives to the viruslab, No links to malware in the forum please!
答案 1 :(得分:4)
你正在遇到一个启发式检测 - 这意味着卡巴斯基已经评估了关于你的dll的每个负面和正面属性(从导入表到文件大小和所谓的实际函数的每一件事),并确定它的等级低于推荐的等级可执行文件。
我猜测示例代码是导致检测的原因 - 这意味着您删除了此代码部分,并且突然卡巴斯基对此感到满意。如果是这样你可以通过使用反射调用Assembly.Load来欺骗卡巴斯基扫描器。 (这可能是它被检测到的原因 - 特洛伊木马下载更多模块作为dll并从内存加载它们非常常见)
typeof(Assembly).GetMethod("Load").Invoke(null,new object[] {Bytes});