学习Soot - 2
来源:互联网 发布:陈百祥演技知乎 编辑:程序博客网 时间:2024/06/01 08:04
还是主要翻译生存手册
一、Soot Phases
Soot的执行被分为几个阶段,每个阶段称为pack。soot执行的第一步都是产生Jimple代码,然后将Jimple代码送入不同的packs。
图中每个小方格就是一个pack。pack命名模式如下:
第一个字母指定pack接收的IR:s -- Shimple,j -- Jimple,b -- Baf,g -- Grimp
第二个字母指定pack的作用:b -- body creation,t -- user-defined transformations,o -- optimizations,a -- attribute generation(annotation)
第三个字母p代表:pack
例如:jap -- Jimple annotaions pack
Figure 1是Soot的过程内执行流。每一个application的class会按照其中一条路径进行处理,这个class不会获得其他的application的classes/
Figure 2是Soot的过程间执行流。当进行过程间分析时,需要设置soot为Whole-Program mode(-w选项)。加入-w选项后,soot增加了三个packs:cg(call-graph generaion),wjtp(whole Jimple transformation pack),wjap(whole jimple annotation pack)。若加入-W选项,则还添加了wjop(whole jimple optimization pack)。
与过程内执行流不同的是,新添的packs产生的信息都可以通过Scene数据结构被soot正在处理的每个application class获得。
二、Soot提供的分析方法
1. 空指针分析
位于jap pack中,分为两个实体:checker和colorer。checker检查可能抛出空指针异常的指令,colorer用来添加标签信息。
$java -cp soot-x.y.z.jar soot.Main -cp . -pp -xml-attributes -f J -p jap.npcolorer onfilename
会产生xml文件和Jimple文件,可能要放在eclipse下才能看到效果?(没试)
2. 数组边界分析
$java -cp soot.x.y.z.jar soot.Main -cp . -pp -xml-attributes -f J -p jap.lvtagger onfilename
- Soot学习笔记(2)
- 学习Soot - 2
- Soot 学习笔记 2:使用 Eclipse 插件
- soot-2
- soot学习1.Soot 环境搭建
- Soot学习第二篇;代码执行soot
- soot学习(一)
- Soot学习笔记(1)
- soot 学习笔记 一
- soot 学习笔记 三
- soot 学习笔记 二
- soot 学习笔记 四
- SOOT学习【1】
- 学习Soot - 1
- Soot学习总结
- soot学习笔记(一)
- soot
- [Soot学习笔记][5]Soot依赖的两个框架
- java获得项目绝对路径
- 零长度的数组巧用
- 「喵神成长史」android基础总结
- IOS 常见库整理
- iOS-简析导览
- 学习Soot - 2
- 浅析Java抽象类和接口的比较
- 黑马程序员——JAVA基础----多线程(一)
- 网络IO之阻塞、非阻塞、同步、异步总结
- redis持久化RDB和AOF
- SERVER 2008 R2利用自带的用Windows Server Backup搞定服务器备份
- [Leetcode]Group Anagrams
- H263,H264简介
- Carthage&&cocopads 摘抄笔记