应用程序中的“水印”如何工作?

时间:2011-07-23 01:22:30

标签: language-agnostic protection watermark piracy-prevention

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  • 水印正如您所描述的那样将一些独特的字节序列放入二进制文件
  • 要小心插入字节序列,以免二进制文件无法使用(取决于二进制文件的类型 - 即.NET或.jar或native .EXE等)。
  • 字节序列必须使得很难识别不熟悉此特定水印系统的人(例如,您可以使用某种http://en.wikipedia.org/wiki/Steganography
  • 所有这些都使得在破解软件时很难去除水印
  • 保护程序可以扫描水印,因为它知道用于水印的算法和密钥
  • 你可以在水印中包含任何东西(取决于算法)......水印软件应该以某种方式加密它,然后再将其加入水印(它甚至可以将哈希值放入二进制文件而不是真实信息中能够识别它)