9. Dynamic Watermarking

In the last chapter, you saw several algorithms that introduce a unique watermark number directly into the executable of a program. All of the algorithms make use of one of two basic ideas: Either encode the identifier as a permutation of the original code, or insert it in new but non-functional code. Reordering can be applied to any list-like language construct, such as statements, lists of declarations, function arguments, or lists of switch-statement labels. New code can be inserted by making sure that either it is never executed or its execution has no effect. Regardless of the embedding method, the algorithms in Chapter 8 have one thing in common: The watermark recognizer extracts the mark by analyzing the code itself. ...

Get Surreptitious Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.