Execution Path Watermark Algorithm

Author

Andrew Huntwork (ash@huntwork.net)
Michael Stepp (steppm@cs.arizona.edu)
Edward Carter (ecarter@cs.arizona.edu)

Description

The Execution Path Watermark is a dynamic watermark that embeds a bit string in the forward jump patterns of a program. Each conditional forward branch embeds one bit of the watermark message. A secret input sequence is chosen, and the (presumably deterministic) execution path of the program given that input sequence is traced. Then branches are inserted into the program along the traced path so that the path will now expose the watermark bit string when executed again. The branches are constructed using opaque predicates, so that the runtime branch behavior cannot be determined statically.

Example

Configuration

There are no extra configuration parameters necessary to run this obfuscator.

References

Collberg et al, "Dynamic Path-Based Software Watermarking", PLDI 2004