Soot的过程

soot Phrases

Soot的标准过程无非就是从Classes到Jimple Bodies再到Baf Bodies再到Classes的过程。

先看这个是必要的。理解了Soot的过程,才知道在哪里插入修改,然后又达到些什么目的。

主要参考文章:Packs and phases in Soot(2008) 

从jb开始:所有的非系统方法都有jb,而jb生成的过程是不可修改的,可以理解成这是一个忠于原著的内容翻译过程。

下一步是cg:生成整个调用图。此阶段的修改适用于调用关系分析,以至一些污点传染分析等。

再下一步是whole program:注意到wjtp->wjop->wjap和后面的jtp->jop->jap是类似的,只是前者针对全局进行处理。wjtp的过程的修改适用于加入inter-analysis(全程序范围分析),可用于soot.Main里面修改一些context?猜测的。wjop的过程修改适用于全局替换或插入?wjap,不清楚。

w-*的过程默认是不打开的,要使用的话需要显式指定soot启用w过程(-w)。

而jtp,用于加入intra-analysis,在方法中增加一些锚点等。默认打开。

jop,默认不打开。可用于混淆代码?猜测的。

jap,默认打开,但内部所有过程是关闭的。需要程序中根据需要使能。

 

持续更新。