soot基础 -- 相关数据结构SootClass,SootMethod,SootBody,Unit的进一步说明
问题 : 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的进一步说明相关推荐
- Soot中基础的数据结构
Soot中基础的数据结构 1.概述 Soot拥有大量复杂的类层次结构.Soot通过构建不同的数据结构来描述程序信息.本篇文章介绍了其中最重要的是Body,Unit,Local,Value,UnitBo ...
- Unity 面试题汇总(三)Unity 基础相关
Unity 面试题汇总(三)Unity 基础相关 目录 Unity 面试题汇总(三)Unity 基础相关 0.FSM(状态机).HFSM(分层状态机).BT(行为树)的区别 1.什么是协同程序? 2. ...
- 网络基础相关知识内容
day29 1.网络基础相关的知识 1.1 架构 1.1.1 C/S 架构 服务器/客户端 优势:能够充分发挥PC机的性能 1.1.2 B/S 架构 服务器/浏览器 (隶属于C/S架构) 优 ...
- 主板是计算机所有部分连接的基础,计算机基础相关知识答案.doc
计算机基础相关知识答案 计算机基础相关知识 一.填空题: 1.计算机的硬件主要由(控制器).(运算器).(存储器).(输入输出设备)以及电源等硬件组成. 2.计算机硬件系统可以分为两大部分,即(主机 ...
- 【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 结构体完整源码 ...
- 主板是计算机所有部分连接的基础,计算机基础相关知识答案
计算机基础相关知识答案 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机基础相关知识1. 计算机的硬件主要由(控制器).(运算器) ...
- unity3d wwise 基础相关
unity3d wwise 基础相关 https://www.jianshu.com/p/cf6df38dbe85 首先下载导入sdk的package,每个平台需要单独下载,然后需要设置wwise工程 ...
- C++基础-介绍·数据结构·排序·算法
C++基础-介绍·数据结构·排序·算法 特点 使用方向 RPC Data Struct 数据结构 栈 Stack 内存分配中的栈 队列 List 数组 Array 链表 LinkTable 树 Tre ...
- linux系统内存管理含义,Linux内存管理--基本概念及相关数据结构
一.内存管理的基本概念 1.存储空间 在32位嵌入式系统中,存储空间的地址范围从0x00000000到0xFFFFFFFF.这4GB存储范围内可以包括以下几种存储空间: 设备空间(MT_DEVICE) ...
最新文章
- Java之IO,BIO,NIO,AIO
- linux ELF文件格式分析
- linux安装mysql8.0.18_Linux安装MySQL8.0
- 解决SwipeRefreshLayout左右滑动事件冲突的问题
- Nginx限流-速率实现
- 网众linux安装教程,网众Linux搭建Samba教程
- python面向对象的含义_Python面向对象(一)
- SRS为何加入木兰社区孵化?
- WIN10 Wifi已连接无internet完美解决办法
- 转正答辩未通过是否可以辞退试用期员工
- JS检测是否有企业微信应用程序
- 2016两次荣登超级计算机,我国自主研制的什么超级计算机2016年两次荣登超级计算机国际top500榜首...
- 微雪树莓派PICO笔记——4. ADC(模拟数字转换器)
- 怎样在pdfFactory虚拟打印机中DIY便笺
- Android中字体使用的单位是,Android移动APP设计字体规范详解
- 计算机毕业设计之java+springboot基于vue的医院信管系统
- [Jenkins]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇)
- 达人评测 酷睿i3 12100F和i5 12490f区别 i312100F和i512490f对比
- JVM从零开始(二) -垃圾回收机制以及内存分代模型
- 个人阅读书籍推荐(不断更新)
热门文章
- 旋转框目标检测mmrotate v0.3.1入门
- 海思系统开发——linux下挂载SD卡
- usleep java_usleep是否创建了线程取消点?
- A商品69元,买二送一;即买3个商品,付2件钱,小于3件时,按原价购买。
- Android学习笔记之ViewFlipper
- 笔记本 ubuntu18.04双系统
- Mysql-DATE_FORMAT()日期格式
- jetson nano opencv 打开 CSI摄像头_OpenCV基础操作-读取、几何变换、阈值
- Ubuntu-18.04版本网络配置,连接网络的方法
- Java学习指南从入门到入土