Class categories

class分为三类:argument classes,application classes,library classes

argument classes:指的是你给soot指定的classes。使用命令行工具时,argument classes就是显示列出来的需要分析的class或者由-process-dir选项指定的文件夹中的类;使用eclipse插件时,argument指的就是你使用soot插件时选择的类,或者当前完整项目中的所有的类。
application classes:被soot框架分析转换输出的那些类。

library classes:被application classes引用的类,但不是application classes。它们被用于转换分析过程中的类,但它们不会被转换输出等。
影响classes分类的两种模式:application mode和non-application mode,在application mode模式下,除过argument classes是application classes外,被argument classes直接或间接引用的classes都是application classes。而标准的Java runtime system的包不是。在non-aplication mode模式下,argument classes是application classes,其他的被argument classes引用的类都是library classes。
注:理解class的分类,有助于在设置-soot-classpath时不容易出错。
例如:
假设类文件是由下述源码生成:
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中的引用。

常用Options

无论是命令行使用soot,还是扩展soot分析框架,常用options的理解都是非常重要的,这关系到类的加载是否正确、soot-classpath是否正确设置、是否在whole-program下分析、输入输出文件格式、是否进行优化等一系列的问题。
下述是我整理的一些常用options:

General Options:

-app

在application mode下运行

-w
-whole-program

在whole-program下运行

Input Options:

-cp path
-soot-class-path path
-soot-classpath path

上述三个使用path作为classpath去寻找argument class

-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

Output Options

-d dir
-output-dir dir

设置dir为输出文件夹

-f format
-output-foramt format

设置soot的输出文件格式

ApplicationMode Options

-i pkg
-include pkg

设置pkg中的类为application classes

-x pkg
-exclude pkg

排除pkg中的类作为application classes

-include-all

被argument classes引用的类都作为application classes

更加详细的Options

soot代码分析框架的基础知识(一)相关推荐

  1. soot代码分析框架的基础知识(二)

    Soot中的结构 本篇内容简单概括一下:soot中存在的主要对象.soot的执行流. Soot中提供了几种对象,分别是:Scene.SootClass.SootMethod.SootField.Bod ...

  2. Android DRM框架与基础知识

    Android DRM框架与基础知识 Android DRM框架 DRM框架的目的:能让安卓设备可以播放更多的内容,不同的内容和硬件设备可能使用的是不同的内容版权保护机制或者没有版权管理机制,但是安卓 ...

  3. clang-tidy——静态代码分析框架

    clang-tidy--静态代码分析框架 clang-tidy介绍 clang-tidy是一个基于clang的静态代码分析框架,支持C++/C/Objective-C. 它是一个功能更强大的lint工 ...

  4. 【软考】《希赛教育·软件设计师考前冲刺与考点分析》计算机硬件基础知识——学习笔记

    Content 第1章 计算机硬件基础知识 第2章 操作系统基础知识 第3章 程序语言和语言处理程序基础知识 第4章 数据结构 第5章 数据库系统基础知识 第6章 网络基础知识 第7章 软件工程基础知 ...

  5. Spark —— 闪电般快速的统一分析引擎 —— 入门基础知识

    Spark 入门基础知识 Spark 的特点 速度快 使用方便 通用 兼容 Spark 基础 下载 独立部署模式(Standalone) 弹性分布式数据集 Scala shell 1. 数组中的最值: ...

  6. 计算机知识怎么做框架,计算机基础知识框架.ppt

    <计算机基础知识框架.ppt>由会员分享,可在线阅读,更多相关<计算机基础知识框架.ppt(25页珍藏版)>请在装配图网上搜索. 1.计算机基础知识讲座,硬件组成 软件系统 网 ...

  7. 中专计算机基础知识汇总,【职业中专计算机基础教育分析】 计算机基础知识...

    摘要:职业教育是指培养面向具体的职业岗位(岗位群)所需职业能力人才的专业基础教育.而在职业教育中除了开设各专业所需的专业课程外,还要开设一些基础教育来充实学生的能力,为其就业打下坚实的基础.计算机基础 ...

  8. aspx网页背景图片设置代码_Vue+CSS3制作双螺旋DNA动画:代码详解和基础知识复习

    1 效果: 2 知识点: ======= 2.1 html的基础知识. 2.2 css3的基础知识. 2.3 vue的基础知识. 2.4 代码讲解非常清楚,小白看了都会. 3 html骨架: ==== ...

  9. 三 计算机知识的重要性分析,学习计算机基础知识对中专学生的重要性分析

    学习计算机基础知识对中专学生的重要性分析 [摘 要]本文主要介绍了计算机基础知识的内容,阐述了学习计算机基础知识对中专学生的作用,并且通过对计算机基础操作的学习,提高中专学生的计算机应用水平.希望本文 ...

最新文章

  1. 蚂蚁金服AAAI论文:基于长短期老师的样本蒸馏方法和自动车险定损系统的最新突破...
  2. linux进程--fork详解(三)
  3. 花生增产万书波谋定中国农民丰收节交易会 山东科技最高奖
  4. Android Handler的使用方法
  5. python修改xml属性值_根据其属性查找xml元素并更改其值
  6. OpenCV-矩形边框cv::boundingRect
  7. 【熵】熵,KL散度,交叉熵,最大熵模型
  8. 简单 常用的git命令
  9. 强网杯2019线上赛-misc
  10. Python实现批量采集美女shipin<无水印>
  11. dell刷sn_像API一样地通过Dell设备SN号自动获取准确的设备型号
  12. OpenCV-Python教程:阈值化(threshold,adaptiveThreshold)
  13. vim 配置(有插件)
  14. 《从零开始的 RPG 游戏制作教程》第十五期:地图发布,以及再见
  15. HDMI 连接笔记本与显示器
  16. IPv6 内网穿透(一)
  17. 望而生畏的C语言在逐渐凋零
  18. rejected from java.util.concurrent.ThreadPoolExe错误
  19. 高校版MATLAB license checkout failed问题及解决
  20. java基于ssm的万卷图书馆借阅管理平台

热门文章

  1. ThinkJS安装到启动
  2. RHCA—436集群
  3. 西门子 S7-200 通过模块连接 Kepware OPC 通讯方法
  4. 04 在地图上添加主页、定位、鹰眼图和比例尺控件
  5. Linux--RH124---unit 1 基础使用
  6. 怎么下载pdf阅读器
  7. 自助服务的演变:如何减少支持工单?
  8. 【HDOJ】1018 Big Number_天涯浪子_新浪博客
  9. 【精】LintCode领扣算法问题答案:入门
  10. Facebook在安全漏洞后重置对9000万账户的访问权限