水印是指:以某种方式集成到 .exe / .dll 文件中的字节数组,可以搜索该文件。许多反盗版/反逆向工程程序包括一个称为“水印”的系统作为特征。例如 VMProtect。
这是如何运作的?如果有人要破解和/或复制受保护的二进制文件,究竟是什么阻止了他删除水印。这个想法是,作为软件的创建者,您可以下载自己程序的盗版副本,然后您可以查看究竟是谁泄露/上传了这个副本。究竟是什么阻止了攻击者只扫描水印并删除它们?
这个问题的第二部分:据说水印(或应该)多次包含在二进制文件中的不同随机位置。显然它们不是完全随机的。因为这会以与有缺陷的硬盘驱动器相同的方式损坏二进制文件。程序不能只用水印覆盖二进制文件中的代码,这是肯定的。保护程序如何在二进制文件的不同(和随机)位置包含水印?这些地点是如何选择的?
第三部分:假设我有一个带水印的二进制文件。保护程序稍后将如何扫描水印。它如何再次找到水印?
另外,水印中如何包含信息(一个小字符串,标识副本的原始所有者)?信息是否以某种方式加密到水印中?