interface UI{ public void display(String msg); } class HelloWorld{ public static void main(String[] arg){ UI ui = new TextUI();ui.dispaly(“HelloWorld”); } } import java.io.*; class TextUI implements UI{ public void display(String msg){ System.out.println(msg); } }命令行1:
java soot.Main HelloWorld那么:
HelloWorld是argument classes和applicationclasses。UI和TextUI则是library classes,以及被String和System.out引用的java.lang.String,java.io.PrintStream等都是library classes.
命令行2:java soot.Main –app HelloWorld那么:
HelloWorld是argument classes,HelloWorld和被它引用的类都是applicationclasses.
命令行3:java soot.Main –i java. –app HelloWorld那么:
HelloWorld仍然是argument classes,applicationclasses会包含名字以java.开始的java runtime classes、HelloWorld、UI和textUI以及java runtime中的引用。
-app在application mode下运行
-w -whole-program在whole-program下运行
-cp path -soot-class-path path -soot-classpath path
-pp(-prepend-classpath)prepend the given soot classpath to thedefault classpath。被作为寻找类型层次的包
-process-dir dir -process-path dir上述两个将dir中的所有类作为要处理分析的类
-android-jars path使用path作为寻找android.jar文件的路径
-force-android-jar path强行使用path作为寻找android.jar文件的路径
-src-prec format设置输入文件的格式
-main-classclass为whole-program分析设置main class
-d dir -output-dir dir设置dir为输出文件夹
-f format -output-foramt format
设置soot的输出文件格式
-i pkg -include pkg
设置pkg中的类为application classes
-x pkg -exclude pkg
排除pkg中的类作为application classes
-include-all被argument classes引用的类都作为application classes