2。2。1 soot 代码分析工具

Soot 是 McGill 大学于 1996 年开始开发的 Java bytecode 分析工具,它完全用 java 实现[13]。 Soot 是将 source code 经过 java 编译器编译产生 bytecode 字节码。bytecode 字节码不是二进制 文件,它可以通过 java 解释器在 java 虚拟机中解释执行[10]。

Soot 有四种类型的中间码表示形式(IR)。Baf,Jimple,Shimple 与 Grimp。其中 Jimple 是 在这次的毕业设计课题中需要掌握的。Jimple 语句的类型有许多种,大致分为 Core Statement、 Intraprocedural control-flow、Interprocedural-flow、ThrowStmt、RetStmt、MonitorStmt 等。

Soot 有一个复杂的类层次结构,其应用程序接口所涉及的一些重要的类有 Scene、 SootClass、SootField、SootMethod、Body、Local、Trap 和 Unit。Scene 类表示整个分析发生 的环境;SootClass 表示装入到 Soot 中或由 Soot 创建的单个类;SootMethod 表示一个类中 的单个方法;SootField 表示类中的一个域;方法的实现通过 Body 接口的实现来表示。在 Soot 中,一个 Body 隶属于一个 SootMethod,即 Soot 用一个 Body 为一个方法存储代码;Locals  指

本科毕业设计说明书 第 11 页 的是 Body 中的局部变量;Units 指的是方法体中的语句,也就是说,一个语句由一个 Unit 接 口表示;Traps 表示支持 Java 异常处理。

使用 soot 工具可以方便地进行程序的分析、编译优化和程序转化。该工具具有良好的技 术支持和高质量的代码,有清晰的内部表示,并且有很好的扩展性。

2。2。2 程序静态分析

所谓静态分析,是指在不需要运行程序的条件下,通过控制流分析、数据流分析、语法 分析等对程序代码进行全局扫描,从而验证代码的安全性、可靠性、规范性、可维护性[14]。 它可以帮助软件开发人员查找代码中存在的结构性错误、安全漏洞等问题,从而保证软件的 整体质量。

程序静态分析是与程序动态分析相对应的代码分析技术,它的执行速度快、效率高,目 前成熟的静态分析工具每秒可以扫描上万行代码;但是,静态分析误报率高,它是通过对程 序进行扫描,依照某种匹配规则,从而解决问题,由于程序的多态性以及匹配规则的不完备, 会造成一定的误报或者漏掉,因而不易解决。

2。2。3 程序动态分析

与程序静态分析想对应,程序动态分析是指在程序运行的状态下进行程序分析。动态分 析的思想是使程序有控制地运行,并从多种角度观察程序运行时的行为[15]。我们完全可以用 一些自动工具来记录、监视、统计程序的运行情况,最典型的放方法是在被测程序的某些位 置插入一些装置,程序运行时,这些装置就能发挥监视作用,运行结束后,能够对测试情况 作出报告[16]。

在程序动态分析过程中,软件测试人员可以主观的控制程序的运行,因此程序动态分析 能够很明确的获得所需要的内容。但如果一个程序如果比较复杂,软件测试人员并不一定能 够考虑到所有的情况,即使是自动化测试,由于软件的复杂程度,也不一定能够覆盖所有测 试路径,这样就造成了分析不完整。

2。3 本章小结

本章主要介绍了 Android 基础知识与本文相关工作。首先介绍了 Android 的四大基本组件、 AndroidManifest 清单文件与 Android 活动栈, 接着介绍了本文分析的重点依据 Intent、 Intent-Filter 以及它们之间的匹配机制,然后介绍了本文进行代码分析的工具 soot,最后介绍 了程序静态分析与动态分析的概念以及它们各自的优缺点。

上一篇:OpenMP+kNN自然场景箱号识别系统设计
下一篇:jsp+mysql图书馆座位管理系统设计

基于Apriori算法的电影推荐

PHP+IOS的会议管理系统的设计+ER图

数据挖掘在电子商务中的应用

数据挖掘的主题标绘数据获取技术与实现

基于PageRank算法的网络数据分析

基于神经网络的验证码识别算法

基于网络的通用试题库系...

张洁小说《无字》中的女性意识

新課改下小學语文洧效阅...

ASP.net+sqlserver企业设备管理系统设计与开发

老年2型糖尿病患者运动疗...

安康汉江网讯

LiMn1-xFexPO4正极材料合成及充放电性能研究

我国风险投资的发展现状问题及对策分析

互联网教育”变革路径研究进展【7972字】

麦秸秆还田和沼液灌溉对...

网络语言“XX体”研究