恶意软件使用多种方法来逃避杀毒软件,一种是在复制时更改其代码。我主要看到了三种类型的技术,它们是:变形恶意软件、寡态恶意软件和多态恶意软件(我可能错过了一种)。这些技术之间的主要区别是什么?它们的作用是什么?
变形、寡态和多态恶意软件之间有什么区别?
逆向工程
混淆
恶意软件
2021-06-11 05:37:39
2个回答
按照复杂性增加的顺序:寡态、多态、变形。
前两个术语通常适用于解密器。我们(反病毒行业)这样定义它们:寡态 - 具有很少可变元素的解密器,不会影响代码的大小或形状。这意味着可变元素通常是固定大小的指令,但它也可以应用于寄存器初始化。
寡态实例
std ;fake, might be replaced by cld / nop / xchg ax, cx / ...
mov cx, size
mov ax, ax ;fake, might be replaced by mov bx, bx / or cx, cx / ...
mov si, decrypt_src
cld ;fake
mov di, decrypt_dst
or ax, ax ;fake
mov bl, key
and bp, bp ;fake
decrypt:
xor [di], bl
xchg dx, ax ;fake
inc di
cld ;fake
loop decrypt
在这种情况下,di
可以将寄存器交换为si
,例如。非常简单的更换。
多态
具有潜在高度可变元素的解密器,这确实会影响代码的大小和/或形状。这意味着可以应用各种更改,包括子程序创建、大块垃圾指令、代码“孤岛”,甚至算法寄存器初始化(示例在这里)。
变质的
高度可变的元素直接应用于身体。在这种情况下通常没有解密器。相同的多态技术也适用于代码本身。最著名的例子是 2002 年的 Simile 病毒(详情请点击此处)。有关于该主题的详细论文和实际示例here)
- 多态代码(通称)不同(不同的加密密钥)代码但结果相同
寡态代码:基于模式的多态性
- 例子:
一些寡态代码的 2 种不同执行:
MOV ECX,FC07379C PUSH 40 XOR ECX,FC0737DC PUSH Tada PUSH ECX NOP NOP PUSH Helloworld PUSH Tada PUSH 0 NOP NOP MOV ECX,F8477840 CALL MessageBoxA XOR ECX,F80779BC MOV ECX,0A2EF248 PUSH ECX XOR ECX,0A2EF248 NOP PUSH ECX PUSH 0 CALL ExitProcess CALL MessageBoxA PUSH 0 PUSH 00400136 PUSH ExitProcess CALL $ + 5 RETN
- 变形代码:具有自动变异的多态性 - 结果略有不同