感染的编译器,还是故障?

10
我遇到了非常奇怪的事情,感觉一切都不对劲。 首先,我在这里发布了这篇文章,因为我不确定这是否与计算机病毒有关。如果有,你能给我指导下哪里可以寻求帮助吗?
现在主要问题是:我的杀毒软件和malwarebytes都会标记使用masm编译的代码以及masm示例为病毒。我已经通过谷歌搜索发现此类问题曾经出现过,所以一开始我认为这只是误报而没有太在意。
但是,我编译了您在本文底部看到的代码来测试我的另外一些东西。我在忽略我的卡巴斯基杀毒软件的同时,通过ollydbg运行它,然后我看到了这样的提示:
00401000 >  -E9 FBEF6F71    JMP 71B00000  ; this is a weird jump I did not put there
00401005     90             NOP
00401006     8BC0           MOV EAX,EAX
00401008   . 8BD8           MOV EBX,EAX
0040100A   . 33D9           XOR EBX,ECX
0040100C   . 8BC3           MOV EAX,EBX
0040100E   . 03CB           ADD ECX,EBX
00401010   . 33C3           XOR EAX,EBX
00401012   . 2BC1           SUB EAX,ECX
00401014   . 8BCB           MOV ECX,EBX
00401016   . 33D9           XOR EBX,ECX
下面的代码不可能编译成那种跳转指令,所以我开始进入代码。过了一会儿我看到奇怪的代码开始枚举 ntdll.dll 库中的 API。发生了什么?如果这是确实是病毒,应该在哪里获得帮助?
但我仍然不确定,comodo和malwarebytes都只将示例标记为病毒,而不标记文件(test.exe)为病毒。
用于测试的测试代码: …
.data

.code

Start:

nop
nop
nop
nop
nop
nop

mov eax, eax
mov ebx, eax
xor ebx, ecx
mov eax, ebx
add ecx, ebx
xor eax, ebx
sub eax, ecx
mov ecx, ebx
xor ebx, ecx

invoke ExitProcess, 0h


end Start

更新:

这段代码不在磁盘上,而是在内存中,因此很可能是某个库在进行此操作:

Disassembly

00401000                    start:
00401000 90                     nop
00401001 90                     nop
00401002 90                     nop
00401003 90                     nop
00401004 90                     nop
00401005 90                     nop

我已经删除了调用退出进程的部分,但它仍然存在。

2个回答

9
关于未解释的跳跃,通过在谷歌上快速搜索,我们找到了masm32.com上这个帖子,其中提供了有趣的信息,尤其是

“COMODO”互联网安全软件是罪魁祸首。
它正在实时修改可执行文件以实现部分独特的“沙盒”功能。


真的吗?谢天谢地!我刚才好害怕哦 :O 我以为我要失去所有的数据了(之前就发生过...)卸载 Comodo - Rick

1

地址71B00000距离您当前的代码很远,请检查它是否实际位于其他已加载的模块内。甚至可能是使用invoke宏(或仅仅是使用DLL - 因为ExitProcess从DLL导入)的副作用。尝试将其替换为简单的无限循环,例如JMP .等。当然,您随后必须手动终止程序,但这将是一个有趣的数据点。此外,请检查磁盘上的exe文件,看看它是否已经在开头有JMP


调用 ExitProcess 应该预期开始执行 ntdll.dll 中的代码,这是绝对正确的。 - Ben Voigt
好的,我马上翻译并回复。与此同时,我已经检查了目录中的其他文件(也是OllyDbg),我发现Olly在相同位置(入口点地址)有相同的跳转到那个地址。然后我重新加载了Olly到内存中,调试Olly提示我代码可能会自我修改,根据我所知的病毒知识,这非常糟糕,不是吗? - Rick

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