Register Expansion, SemaCall, and SideData: Three Low-Overhead Dynamic Watermarks Suitable for Automation in LLVM

David Schwarzbeck, Daniela Novac, Michæl Philippsen · Digital Threats Research and Practice · 2025

Software watermarking is a means of protection against piracy and unauthorized tampering. We propose three dynamic software watermarking techniques and show how we automatically insert them into to-be-watermarked code. All three select many spots in the code and insert randomly generated and computationally different hash-like arithmetics that at runtime transform a secret input into a watermark message. The Register Expansion Watermark expands 32 bit values to 64 bits and piggy-backs hash computed values upon existing computations to spread the message around. The SemaCall Watermark performs its hash arithmetics on the results of a set of library functions that the to-be-watermarked code calls. As the semantics of the library functions is known, we can compare the generated hash values to the ones expected for the secret input and then trigger an easter-egg that generates the message. The SideData Watermark adapts the techniques from the SemaCall Watermark to work on memory allocations. By detecting the secret input in the allocated memory with an adapted hash generation, we can reuse the same procedures to generate the message in an easter-egg. We show that leveraging many and different hash-like arithmetics, our watermarks are hard to attack and also have a low performance overhead.

Read the paper · More papers on PaperTik