变形和多态代码有什么区别?

7

变形代码是一种输出与自身语义等价的代码:https://zh.wikipedia.org/wiki/变形代码

然而多态代码是使用多态引擎进行变异,同时保持原始算法不变的代码:https://zh.wikipedia.org/wiki/多态代码

那么,唯一的区别是多态代码依赖于其他程序(多态引擎),而变形代码具有内置的该功能吗?

有人能否通过链接或答案提供多态代码的例子?

谢谢。


3
变形代码是一个自复制程序。它必须处理自引用。多态代码是由多态引擎生成的。简而言之,你可以把它们都看作两部分:a) 改变(其他)代码的代码 b) 执行实际工作的代码。两者之间的区别仅在于第一部分 a 中,对于变形代码,这部分必须能够改变自身,而对于多态代码,则必须添加括号中的文本。同样来自维基百科页面的说明:“这与多态代码不同,多态引擎无法重写自己的代码”。 - Margaret Bloom
@MargaretBloom - 感谢您的回答! 您能否想到任何资源,展示如何编写简单的多态引擎或变形代码?在谷歌搜索周围,似乎这些主题有点禁忌或不太受欢迎。 - Shuzheng
我不知道,但是这个答案有一些相关的链接。特别是这个链接 - Margaret Bloom
2个回答

10
多态代码和变形代码的关键区别在于实际执行的代码是否会发生变化。多态病毒解密其代码,运行该代码,然后在传播自身时使用不同的密钥加密已解密的代码。在其他机器上运行时,解密的代码是相同的。变形病毒只是运行其代码,然后在传播自身时将其代码变异为不同但功能相同的代码。在传播到每台机器时,执行的代码都是不同的。
这意味着对于多态病毒,可以通过简单地运行它(理想情况下在某种安全沙箱环境中运行),然后检查内存中解密版本的代码来检查原始未加密代码。对于变形代码,这种方法不起作用,病毒永远不会生成自己的原始版本。
请注意,“多态代码”这个术语很容易令人困惑。在没有上下文的情况下,对大多数程序员来说,它意味着使用多态类型编写的代码。

0

变形病毒和多态病毒是两种被称为恶意软件的恶意软件。 变形病毒是一种在每次迭代中翻译和更改自身或者可以说是重新编写其代码,以使反恶意软件软件难以识别其签名或模式。恶意软件在系统中停留的时间越长,它就会产生越多的迭代,并且这些迭代越复杂,使得杀毒应用程序越来越难以检测或清除它。 多态病毒通过使用可变加密密钥对自身进行加密工作,因为用于加密的密钥不同,所以每个副本看起来都不同。但是病毒解密例程将保持不变,由于代码的静态部分,因此杀毒程序很容易识别恶意软件。


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