Download SandMark

Version Release date Files Supporting Software
V3.4 August 11, 2004
The development of SandMark is supported by the NSF under grant CCR-0073483, the AFRL under contract F33615-02-C-1146, and by the New Economy Research Fund of New Zealand under contracts UOAX9906 and UOAX0214.

SandMark 3.4.0 (Mystique) is our first full release. It currently runs on Linux, Windows and MacOS and requires Java 1.4.

SandMark 3.4.0 incorporates:
  • 13 static and 3 dynamic software watermarking algorithms,
  • 33 code obfuscation algorithms,
  • 3 code optimization algorithms,
  • 6 bytecode diff algorithms,
  • a visualization tool that can display bytecode instructions, a program's inheritance graph, method control flow graphs, register interference graphs, and method slices,
  • 6 software complexity metrics (Harrison, Munson, Kafura, Halsted, McCabe, and Chidamber),
  • a "wizard" that can select appropriate software watermarking and code obfuscation algorithms to protect a program.
V3.3 October 26, 2003
  • BCEL (required to build)
Supported by the NSF under grant CCR-0073483 and the AFRL under contract F33615-02-C-1146.
This release extends version 3.1.1 with:
  • bug fixes (SandMark runs on Windows, Linux, and other Unix versions),
  • a simpler distribution format (SandMark will be shipped as a single jar file),
  • an opaque predicate library,
  • control flow obfuscations that rely on opaque predicates,
  • an improved gui,
  • an implementation of the Davidson-Mhyrvold software watermarking algorithm (US Patent 5,559,884),
  • the ability to sort bytecode methods by different metrics (to be used as a manual attack against software watermarks),
  • a number of code reordering obfuscations,
  • a string obfuscator,
  • the ability to encrypt watermarks before embedding,
  • an implementation of the Moskowitz-Cooperman software watermarking algorithm (US Patent 5,745,569).
  • an implementation of Venkatesan et al.'s graph theoretic software watermarking algorithm.
SandMark can be executed like this:
    java -jar sandmark.jar
V3.1.1 (October 22, 2002) January 28, 2003
Supported by the NSF under grant CCR-0073483, the AFRL under contract F33615-02-C-1146, and by the New Economy Research Fund of New Zealand under contracts UOAX9906 and UOAX0214.
This is the first official release of SandMark since version 0.2. It is still alpha software: it is stable enough to play with but should not be relied on for production use. This release extends v2.1 with
  • an implementation of Venkatesan's software watermarking algorithm A Graph Theoretic Approach to Software Watermarking
  • more code obfuscations (inlining, boolean variable splitting, class splitting, array obfuscations)
  • an obfuscation loop that selects and applies a sequence of obfuscations to a program,
  • a degrading code obfuscation that makes a program slower (useful when distributing trial versions of software).
Execute SandMark like this:
    java -classpath sandmark.jar:BCEL.jar:bloat-1.0.jar:tools.jar sandmark.Console
The tools.jar library should be part of your Java distribution.
V2.1 July 3, 2002
Supported by the NSF under grant CCR-0073483.
This is an internal release.
V2.0 June 12, 2002
Supported by the NSF under grant CCR-0073483.
This is an internal release. A complete rewrite of v0.2 using only Java and including:
V0.2 September 29, 2000
Supported by the NSF under grant CCR-0073483.
This was the first public release of SandMark containing