Soot 学习笔记 1:First Step 命令行执行 soot

1.命令行执行

本文主要摘自 Eric Bodden 的博客,并于 win 7上验证。

在命令行中,在 soot 的 jar 包目录下,可以使用如下命令查看帮助。参见 soot的命令行选项,推荐浏览一遍。

java -jar soot-2.5.0.jar soot.Main -help

soot 可以处理3种类型的文件:

  1. java源文件
  2. java .class 文件
  3. soot 的 Jimple 源文件,“.jimple”。

如果 soot 要处理单个文件,输入如下命令:

java -jar soot-2.5.0.jar -cp . -pp Hello

虽然这里不用为 java 指定 -cp,但是 soot 自身需要指定 -cp 的,同时为了能索引到 jdk 的符号,例如 java.lang.Object 等,加上 -pp 选项(“prepend path”)。-pp 选项的前提是CLASSPATH 和 JAVA_HOME 设置正确,他会自动把当前系统的 CLASSPATH 以及 ${JAVA_HOME}/lib/rt.jar 等加入。如果不用 -pp 选项,可以使 -cp 包含jdk 中的 jre/lib/rt.jar 这个包。

java -jar soot-2.5.0.jar -cp .;"%JAVA_HOME%"\jre\lib\rt.jar Hello

如果使用 soot 处理目录。需要加上 -process-dir 选项。同时一定要配合 -d 选项指定输出目录。

java -jar soot-2.5.0.jar soot.Main -cp . -pp -process-dir . -d ./sootout

soot 可以指定处理不同的file,包括 .class/ .java/ .jimple

-src-prec 选项指定 soot 的输入类型:

  1. c or class (default): favour class files as Soot source,
  2. only-class: use only class files as Soot source,
  3. J or jimple: favour Jimple files as Soot source, and
  4. java: favour Java files as Soot source.

例如:

-src-prec java 

再有关于 application class 和 library class 的区别,前者是 soot 真正处理的,后者仅作为类型符号。如果使用了 -app 选项, soot 不会处理 java.* 和 com.sun.* 包内的类,如果想包含他们,就使用 -i 选项,例如

 -i java.

如果想选择 soot 的输出格式,可以使用 -f 选项,参见 -f 选项说明

最后关于 soot 的 phase 选项。这块回头介绍了phase 再说。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值