问题 : Soot解析之后的类中到底包含哪些信息呢?

当代码被Soot处理之后,得到的类的信息如下:

1.上图表示,一个java中所对应的在soot中的数据结构

2.里面含有成员变量(SootField),以及成员方法(SootMethod)的信息。

3.成员方法的数据结构较为复杂,相对于成员变量而言,多了异常类的描述,多了参数以及返回类型,还有其包含的函数主体(SootBody)

4.成员方法(SootMethod)中的参数类型(parameterType),以及返回值类型(returnType)类型为Type类型,而Type类型中用String来表示类型,而非对象。

5.在函数主体(SootBody)中,包含下列信息

  • 函数主体中包含很多成分,soot先是根据程序中按照语句进行建模(一条语句一个Unit)。
  • 然后将这一个一个的单位(Unit)进行处理。
  • 多个Unit构成按照某种规则组织,就会形成块(Block)
  • Unit语句之间是存在着一定的关系的,这就构成了流程图。所以我们能够确定跳转到这个Unit的其他Unit(调用getBoxesPointingToThis()),也可以找到跳到的其他Unit(调用getUnitBoxes())。
  • 那么Unit中的内部结构是什么样子的?  ------>
  • (1) 跳转到其他 unit的控制信息。【体现了控制流
  • (2) 本语句中用到的数据(value)。【体现了数据流


soot基础 -- 相关数据结构SootClass,SootMethod,SootBody,Unit的进一步说明相关推荐

  1. Soot中基础的数据结构

    Soot中基础的数据结构 1.概述 Soot拥有大量复杂的类层次结构.Soot通过构建不同的数据结构来描述程序信息.本篇文章介绍了其中最重要的是Body,Unit,Local,Value,UnitBo ...

  2. Unity 面试题汇总(三)Unity 基础相关

    Unity 面试题汇总(三)Unity 基础相关 目录 Unity 面试题汇总(三)Unity 基础相关 0.FSM(状态机).HFSM(分层状态机).BT(行为树)的区别 1.什么是协同程序? 2. ...

  3. 网络基础相关知识内容

    day29 1.网络基础相关的知识 1.1 架构 1.1.1  C/S 架构   服务器/客户端 优势:能够充分发挥PC机的性能 1.1.2  B/S 架构  服务器/浏览器 (隶属于C/S架构) 优 ...

  4. 主板是计算机所有部分连接的基础,计算机基础相关知识答案.doc

    计算机基础相关知识答案 计算机基础相关知识 一.填空题: 1.计算机的硬件主要由(控制器).(运算器).(存储器).(输入输出设备)以及电源等硬件组成. 2.计算机硬件系统可以分为两大部分,即(主机 ...

  5. 【Linux 内核 内存管理】内存映射相关数据结构 ③ ( vm_area_struct 结构体成员分析 | shared 成员 | anon_vma_chain 成员 | anon_vma 成员 )

    文章目录 一.vm_area_struct 结构体成员分析 1.shared 成员 2.anon_vma_chain 成员 3.anon_vma 成员 二.vm_area_struct 结构体完整源码 ...

  6. 主板是计算机所有部分连接的基础,计算机基础相关知识答案

    计算机基础相关知识答案 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机基础相关知识1. 计算机的硬件主要由(控制器).(运算器) ...

  7. unity3d wwise 基础相关

    unity3d wwise 基础相关 https://www.jianshu.com/p/cf6df38dbe85 首先下载导入sdk的package,每个平台需要单独下载,然后需要设置wwise工程 ...

  8. C++基础-介绍·数据结构·排序·算法

    C++基础-介绍·数据结构·排序·算法 特点 使用方向 RPC Data Struct 数据结构 栈 Stack 内存分配中的栈 队列 List 数组 Array 链表 LinkTable 树 Tre ...

  9. linux系统内存管理含义,Linux内存管理--基本概念及相关数据结构

    一.内存管理的基本概念 1.存储空间 在32位嵌入式系统中,存储空间的地址范围从0x00000000到0xFFFFFFFF.这4GB存储范围内可以包括以下几种存储空间: 设备空间(MT_DEVICE) ...

最新文章

  1. Java之IO,BIO,NIO,AIO
  2. linux ELF文件格式分析
  3. linux安装mysql8.0.18_Linux安装MySQL8.0
  4. 解决SwipeRefreshLayout左右滑动事件冲突的问题
  5. Nginx限流-速率实现
  6. 网众linux安装教程,网众Linux搭建Samba教程
  7. python面向对象的含义_Python面向对象(一)
  8. SRS为何加入木兰社区孵化?
  9. WIN10 Wifi已连接无internet完美解决办法
  10. 转正答辩未通过是否可以辞退试用期员工
  11. JS检测是否有企业微信应用程序
  12. 2016两次荣登超级计算机,我国自主研制的什么超级计算机2016年两次荣登超级计算机国际top500榜首...
  13. 微雪树莓派PICO笔记——4. ADC(模拟数字转换器)
  14. 怎样在pdfFactory虚拟打印机中DIY便笺
  15. Android中字体使用的单位是,Android移动APP设计字体规范详解
  16. 计算机毕业设计之java+springboot基于vue的医院信管系统
  17. [Jenkins]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇)
  18. 达人评测 酷睿i3 12100F和i5 12490f区别 i312100F和i512490f对比
  19. JVM从零开始(二) -垃圾回收机制以及内存分代模型
  20. 个人阅读书籍推荐(不断更新)

热门文章

  1. 旋转框目标检测mmrotate v0.3.1入门
  2. 海思系统开发——linux下挂载SD卡
  3. usleep java_usleep是否创建了线程取消点?
  4. A商品69元,买二送一;即买3个商品,付2件钱,小于3件时,按原价购买。
  5. Android学习笔记之ViewFlipper
  6. 笔记本 ubuntu18.04双系统
  7. Mysql-DATE_FORMAT()日期格式
  8. jetson nano opencv 打开 CSI摄像头_OpenCV基础操作-读取、几何变换、阈值
  9. Ubuntu-18.04版本网络配置,连接网络的方法
  10. Java学习指南从入门到入土