很抱歉的是很久很久没有做过Java工程了,加上Soot又是一个历史很悠久的项目,而用者也不多。
这是一个反编译并重新优化/修改/混淆代码的Java分析框架。
以下是一些Java的基础,哭。
JAVA_HOME
CLASSPATH,用于jvm运行时查找相关class的,如果当前路径查找,必须加入”.”。相关的.jar如果不想-cp(classpath的缩写),也必须加入CLASSPATH。
有包路径的class,直接查找是不行的,要构造个包……
soot相关:
官方的下载包soot.2.5.0.jar,估计是java 1.7编译的,java1.8下用不了,要去下载nightlybuild的版本;
想下java1.7,麻烦又来了,oracle要注册才能下(没试过)。
Eclipse倒不进soot.2.5.0的插件,Eclipse也升级了。
还没有试过用ant,不过目前不着急,先看看soot可以怎么用,用来做什么再说。
2017.6.22
目前能导入soot插件的是Eclipse Kepler,最新的版本是soot.2.5.2,然而Kepler需要的Java SDK版本是JAVA 1.6,为了方便,我找了个NUC,直接按照这个配置安装了就可以使用了。Java 1.6在官网上下载稍为有点麻烦,可以在别的站点上下载。
在package里面的class,
如在jar里,就-cp jar名,用com.google.xxx.yyy的方式找class
没在jar里,就构造com\google\xxx\yyy的目录。
命令一:
java soot.Main -cp “%JAVA_HOME%\jre\lib\rt.jar”;. ClassTest
默认出优化后的class
命令二:
java soot.tools.CFGViewer –soot-classpath “%JAVA_HOME%\jre\lib\rt.jar”;. ClassTest
生成里面各个方法的dot文件
命令三:
需要先安装graphviz
dot.exe -Tpng -o ClassTest.png ClassTest.dot
把dot文件打印为png
命令四:
java soot.Main –soot-classpath “%JAVA_HOME%\jre\lib\rt.jar”;. -f J ClassTest
生成Jimple文件