使用多态代码进行合法目的?

时间:2009-11-22 19:51:40

标签: metaprogramming

我最近遇到了Polymorphic Code这个词,并且想知道是否有人可以建议合法(即在合法和商业上合适的软件中)将其用于计算机程序?现实世界的例子链接将不胜感激!

在有人回答之前,请告诉我们关于面向对象编程中多态的好处,请阅读以下多态代码定义(取自Wikipedia):

多态代码是使用多态引擎进行变异同时保持原始算法不变的代码。也就是说,代码每次运行时都会自行更改,但整个代码的功能根本不会改变

谢谢,MagicAndi。

更新

到目前为止的答案摘要:

  • 原始代码的运行时优化
  • 为应用程序的每个副本分配“DNA指纹”
  • 模糊程序以防止逆向工程

我还被引入了术语“metamorphic code”。

6 个答案:

答案 0 :(得分:5)

原始代码的运行时优化,基于在真实环境和实际输入中运行应用程序时收集的实际性能统计信息。

答案 1 :(得分:4)

例如,

Digitally watermarking音乐通常用于确定谁负责泄漏音轨。它使音乐的每个副本都是唯一的,这样副本就可以追溯到原始所有者,但不会影响音轨的音质。

通过在分发之前通过polymorphic engine运行每个单独的副本,可以对编译的软件进行类似的操作。然后,如果该软件的破解版本被发布到互联网上,开发人员可以通过查找产生多态引擎的特定变化(一种DNA测试)来判断谁破解了它。据我所知,这项技术从未在实践中使用过。

我想这并不是你想要的,因为多态引擎没有随代码一起分发,但我认为它最接近你会发现的这种技术的合法商业用途。

答案 2 :(得分:3)

多态代码是一件好事,但变形甚至更好。对于合法用途:好吧,除了防破解和复制保护之外我什么都想不到。如果您不想使用真实世界(虽然不合法),请查看vx.org.ua

答案 3 :(得分:2)

作为Sami notes,即时优化是多态代码的绝佳应用。一个很好的例子就是Fastest Fourier Transform in the West。它有许多解决方案,它与self-profiling结合使用,可以在后续执行时调整代码路径和求解器参数。结果是程序为您的计算环境优化自身,随后的运行变得更快!

可能感兴趣的相关想法是computational steering。这是在运行过程中改变大型模拟的执行路径的做法,以关注研究人员感兴趣的领域。模拟的总体目的不会改变,但反馈循环的作用是优化计算。在这种情况下,可执行代码未被显式重写,但从用户角度来看效果类似。

答案 4 :(得分:1)

多态代码可用于混淆弱或专有算法 - 可能使用加密e。 g ..有很多“合法”用途。这些日子合法一词在IT方面有点狭隘。 IT的核心范例包含安全性。是否在漏洞利用中使用polymorph shellcode或使用AV扫描程序检测此类代码。你必须知道它。

答案 5 :(得分:0)

模糊程序,即防止逆向工程:目标是保护IP(知识产权)。