Software piracy, reverse engineering, and tampering are the problems; watermarking, obfuscation, and tamper-proofing are the answers. Protecting software running in a malicious computer is the objective.
This is a survey, with 98 references. Some of them are merely mentioned, like the impossibility-of-obfuscation result in the 2001 Crypto conference, but their presence is a good sign. About a dozen techniques are described in a paragraph or two each, with varying degrees of clarity and completeness. The authors’ work on pointer aliasing obfuscation and dynamic graph watermarking is included. Droll stick figure illustrations enliven the definitions; data and flow diagrams are used to illustrate the techniques. The taxonomy is informal, and it is empirical rather than theoretical. The goals of the attacks are not precisely defined, and the countermeasures are not complete solutions.
There are some connections that could have been drawn that weren’t. For example, code obfuscation is listed as a countermeasure for reverse engineering, but it works for tamper-proofing as well. Still, given the modest length of the paper, it provides useful insights into the subject.