Scripting SandMark

SandMark can be run through a CLI interface, or from a shell prompt.



Use the following command to run CLI:
java -cp sandmark.jar sandmark.smash.sandmarkCLI -options

CLI options:
-U : Usage
-S  : Display static watermark list
-D : Display dynamic watermark list
-R : Display obfuscator list
-L <level>: Specify obfuscator level to be displayed - 'app'/'class'/'method'
-A <algoname>: Specify algorithm
-H : Get algorithm help
-i  <inputJar> : Specify input jar file
-o  <outputJar> : Specify output jar file
-w <watermark> : Specify watermark value
-k  <key>  : Specify key value
-E : Perform embedding
-R : Perform recognizing
-O : Perform obfuscation
-P <prefixStr> : Specify prefix string (for ConstantString watermark)
       
Dynamic Watermark specific options:
-t <tracefile> : Specify trace file
-c <classpath> : Set ClassPath
-m <mainclass> : Set MainClass
-a <arguments> : Set Arguments
-T : start Trace
-N <encodeStr> : Specify parameters for CT/DynamicAA algorithm.
      encodeStr format  -
           
       


Use  the following command to start up SandMark shell:
java -cp sandmark.jar sandmark.smash.Smash

At the $smash prompt, you can give the following shell commands:
Additional options:


Sample_Scripts for SandMark CLI 


 
       #   setenv sandmarkCLI  "java -classpath sandmark.jar sandmark.smash.SandmarkCLI"               $sandmarkCLI -A AddMethField -i TTT.jar -o outputTTT.jar -w 1234 -E -k 1111
              > Embed 1234  in TTT.jar using the static watermark algorithm AddMethField and key value 1111;
                 outputTTT.jar is the watermarked jar file.
              $sandmarkCLI -A CT -i TTT.jar -o TTT.tra  -m TTTApplication  -T
              > Create a trace file TTT.tra from the input file TTT.jar; TTTApplication is the main class specified.           
              $sandmarkCLI  -A CT -i TTT.jar -t TTT.tra -w 12345 -E
              > Embed the wateramark 12345 in TTT.jar using the tracefile TTT.tra. The default watermaked file is TTT_wm.jar
              $sandmarkCLI -A Method2RMadness -i TTT.jar   -O
              >  Run the Method2RMadness obfuscation on TTT.jar ; TTT_obf.jar is the default obfuscated jar file created.                $sandmarkCLI -A AddMethField -i outputTTT.jar -k 1111 -R
              > Run the recognition for AddMethField algorithm on outputTTT.jar file with key value 1111.




Sample_Scripts for SandMark shell


       # java -classpath sandmark.jar sandmark.smash.Smash
       > Initialize and start sandmark shell. A smash$ prompt will be displayed.
           
           smash$ selectAlg("ConstantString");
           smash$ setInputFile("TTT.jar");
           smash$ setKey("9876");
           smash$ setWM("12345");
           smash$ setPrefix("sm$");
           smash$ embed();

           smash$ selectAlg("DynamicAA");
           smash$ setInputFile("TTT.jar");
           smash$ setTraceFile("TTT.tra");
           smash$ setMainClass("TTTApplication");
           smash$ startTrace();
           smash$ set_min_wparts("2");
           smash$ set_encode_as_constants("true");
           smash$ set_use_opaque_methods("true");
           smash$ set_reuse_methods("false");
           smash$ embed();
                                 smash$  selectAlg("Buggy Code");
          smash$  setInputFile("Ackermann.jar");
          smash$  setOutputFile("AckermannOutput.jar");
          smash$  obfuscate();

           smash$ setInputFile("TTT.jar");
           smash$ embedMultipleWM("AddMethField.1234:BogusExpression.56789:HatTrick.4444");

           smash$ setInputFile("TTT_wm.jar");
           smash$ selectAlg("BogusInitializer");
           smash$ setKey("1111");
           smash$ recognize();