5

水印是指:以某种方式集成到 .exe / .dll 文件中的字节数组,可以搜索该文件。许多反盗版/反逆向工程程序包括一个称为“水印”的系统作为特征。例如 VMProtect。

这是如何运作的?如果有人要破解和/或复制受保护的二进制文件,究竟是什么阻止了他删除水印。这个想法是,作为软件的创建者,您可以下载自己程序的盗版副本,然后您可以查看究竟是谁泄露/上传了这个副本。究竟是什么阻止了攻击者只扫描水印并删除它们?

这个问题的第二部分:据说水印(或应该)多次包含在二进制文件中的不同随机位置。显然它们不是完全随机的。因为这会以与有缺陷的硬盘驱动器相同的方式损坏二进制文件。程序不能只用水印覆盖二进制文件中的代码,这是肯定的。保护程序如何在二进制文件的不同(和随机)位置包含水印?这些地点是如何选择的?

第三部分:假设我有一个带水印的二进制文件。保护程序稍后将如何扫描水印。它如何再次找到水印?

另外,水印中如何包含信息(一个小字符串,标识副本的原始所有者)?信息是否以某种方式加密到水印中?

4

1 回答 1

1

我不知道你的目标是什么,但是:

  • 水印就像您描述的那样将一些独特的字节序列放入二进制文件中
  • 字节序列必须小心插入,以免二进制文件不可用(取决于二进制文件的类型——即 .NET 或 .jar 或本机 .EXE 等)
  • 字节序列必须使得不熟悉此特定水印系统的任何人都难以识别(例如,您可以使用某种http://en.wikipedia.org/wiki/Steganography
  • 这一切都使得破解软件时去除水印变得非常困难
  • 保护程序可以扫描水印,因为它知道用于水印的算法和密钥
  • 你可以在水印中包含任何东西(取决于算法)......水印软件应该在将其放入水印之前以某种方式对其进行加密(它甚至可以将哈希放入二进制文件而不是真实信息,并且仍然能够识别它)
于 2011-07-23T01:29:32.247 回答