繁体   English   中英

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

[英]How does “watermarking” in applications work?

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM