Android应用程序的操作语义外文翻译资料

 2022-04-29 09:04

Android应用程序的操作语义

摘要

Android操作系统是当今智能手机中最常见的操作系统。 Android应用程序是在基于寄存器的Dalvik虚拟机(DVM)上执行的,而不是基于堆栈的,例如Java虚拟机(JVM)。 DVM和JVM之间的差异使得JVM的程序分析工具不能直接应用于DVM。操作语义是研究、验证和分析Android应用程序的主要工具。本文提出了一个用于Android编程的AndroidS的精确操作语义。在语义中考虑的Dalvik指令集旨在捕获Android编程的主要功能,并支持使用语义来评估应用程序分析的方法。语义还模拟应用程序执行期间用户和应用程序之间的交互。语义也尊重由Android应用程序的生命周期施加的状态变化的限制。

关键词:Android平台·Android编程·操作语义·Android语义·Android分析·AndroidP·AndroidS

1介绍

智能设备操作系统的例子是Android和iOS。 不过,Android是智能和嵌入式设备使用最广泛的操作系统。 编写Android应用程序的主要语言是Java(使用丰富的Java标准库资源)。 为了执行,这些应用程序被编译成Dalvik字节码[1,22]。 与iOS相比,Android应用程序的可靠性是一个严重问题,因为在安装之前不考虑数字身份验证。 Android应用程序的常见来源之一是Google Play商店。 因此恶意和恶意的Android应用程序可以轻松找到我们的智能设备。 这可能会导致窃取私人数据并降低设备的性能[22]。

Android平台作为大多数移动设备操作系统的广泛传播,使得Android程序的开发成为当务之急。然而,经典的程序分析技术[8,9](适用于Java程序)并不直接适用于Android应用程序[18,19,24]。这也是由于以下事实:Dalvik虚拟机(DVM)是执行Android应用程序的主要工具。 Java虚拟机(JVM - 执行Java程序)和DVM之间存在许多差异。 而JVM是基于堆栈的,DVM是基于寄存器的。 因此,DVM依靠寄存器来确定操作参数。 JVM中操作数栈所扮演的寄存器角色。 因此,JVM和DVM中的指令集体系结构并不相同。 例如,当一条指令在DVM中传输数据时,需要许多指令才能在JVM中执行相同的工作[15]。

在本文中,我们向Android应用程序的重要组件提供正式的操作语义AndroidS,包括Dalvik bytcode指令。 语义呈现在丰富而简单的Android应用程序AndroidP模型上。 语义状态旨在准确捕获计算过程中的DVM状态。 然而,语义状态很容易进一步使用语义来评估为Android应用程序开发的程序分析。 提议的语义考虑了Android应用程序特有的不同问题,例如手势(如点击和滑动)。 这意味着语义在一定程度上模拟了Android应用程序对应用程序用户手势的反应。

本文提出的操作语义可以被描述为活动中心的主要组成部分,语义组成部分是活动表征。 这与主要由活动组成的Android应用程序的结构一致。 提议的语义AndroidS也考虑到了并且适用于Android活动的固定周期的限制。 这要求在运行应用程序期间限制执行宏的顺序。 本文提出的语义的一个重要应用是验证Android应用程序分析的新方法[5,20,21,28]的正确性。

与大多数相关工作相比[15,22],所提出的操作语义AndroidS具有以下优点:

- 在AndroidS中考虑的Dalvik指令的数量和类型是方便的;

- 语义以更简单的形式化捕捉指令的语义;

- Android编程的更多方面是通过语义来模拟的。

需求驱动。 本文中的工作受到Android编程的操作语义的需求的驱动

- 涵盖Dalvik主要重要说明;

- 准确简单地表达Android应用程序与用户的交互

- 表示只执行宏指令并尊重Android活动生命周期强制执行的约束。

论文大纲

本文的其余部分安排如下。 第二部分介绍了编程语言AndroidP的语法,用于表示第3节介绍的操作语义。 第4节的评论与我们提出的语义学最相关。 本文在第5节中得出结论。

2语法

本节介绍的Android编程模型AndroidP是对[1,15,22]中使用的语法模型的改进。

图1给出了Android应用程序的编程模型AndroidP的语法。 模型中的一组类型装备了各种类型,包括整数,布尔值,双数,类和数组。 该模型中有多达19条Dalvik指令。 在原始全套超过200条Dalvik指令中,19个导入装置被仔细挑选出来。 AndroidP中另一种重要的指令类型是一组宏指令[1,15,22]。

为了设计一个简单而强大的语法,并且涵盖了Dalivk字节码的主要功能,宏指令的选择以及AndroidP中的Dalvik指令的选择是非常谨慎的。选择和设计宏指令的准则包括几乎所有的Android应用程序和控制应用程序执行的应用程序。 因此,Android应用程序的大多数分析技术将研究这些指令。 因此,我们的语义有很好的机会通过向指令语义提供准确的表示来支持Android应用程序的分析技术。

在AndroidP中,命令集是一系列Dalvik指令和宏指令。 方法的结构(方法m,c,t,t *,com)中:

- m表示方法名称;

- c表示方法的类别;

- t表示方法的返回类型;

- t *表示方法参数的类型序列;

- textitcom表示方法体。

在AndroidP中的类字段的语法形式为(fi eld f,c,t),其中f是字段名,c是类拥有字段,t是字段类型。 AndroidPAP中的每个类都是AppCompatActivity的扩展,包含以下几部分:

- c是类名;

- app是应用程序名称拥有类;

- 指向活动视图文件的整数类型字段根拥有类;

- 类型整型的结果记录运行该类的对象(活动)的结果;

- 布尔类型已完成的字段,用于确定类的对象(活动)是否已完成;

- F *一系列其他领域;

- M *一系列方法定义。


图1 AndroidPAndroid应用程序的模型

AndroidP中应用程序的语法形式为(应用程序应用程序,C *),其中app表示应用程序名称app,C *表示类的序列。

AndroidP可以被认为是[1,15,22]中的语法改进。 AndroidP的目标是克服这些相关作品中编程模型的缺点。 更具体地说,包含一套acro指令和三个特殊类的特殊领域的想法受到了[22]的启发。 但是,我们发现[22]的编程模型非常简单,而[1,15]的编程模型非常简单。 因此有必要开发我们的中等模型。 [7]我们使用相同的AndroidP模型来开发Android应用的类型系统。

3 语义

本节使用前一节介绍的模型AndroidP向Android应用程序提供操作语义[12,14,26,27],AndroidS。

语义状态由堆和堆栈组成。 堆是从内存位置到类对象的部分映射。 一个类对象是一个局部映射,它将一个类的字段形成为一组值。 这组值包括整数,位置,空值和元组值。 一个框架是一对部分框架和一个注册估价。 寄存器评估是来自寄存器的部分映射,它是执行相关部分帧中的命令所必需的。 部分框架具有相同的语法和方法定义,但部分框架的命令组件是方法的一部分。 因此,部分帧表示方法的部分执行,并包括要执行的其余命令。

图2给出了拟议语义AndroidS的第一套语义规则,forAndroidP。 规则5给出了指令new-array i,j,t的语义。 该规则假设一个函数类型大小,用于计算给定类型的大小m。 寄存器j包含所需数组的长度n。 该规则为所需数组的堆分配新的位置{l,l 1,...,l m * n-1}。 新的位置在修改堆H?中初始化为0。 示例1提供了应用规则5的示例。

图2 操作语义AndroidS的语义规则

4 文献回顾

Android应用的语义应用的一个方向是使用语义来揭示Android应用的安全漏洞[3,4,6,10,11,33]。 众所周知的事实是,Android应用程序会产生静态的程序分析挑战。 Android语义可以帮助缓解这些挑战。 Android语义的另一个主要应用方向是使用Android语义开发程序分析[13,23,25,31,32,34]。

在文献[29,30]中,介绍了具有反射特性的Dalvik字节码语言的语义。 对于相同的语言,也提供了一种先进的控制流分析。 本研究考虑了反射,动态调度和例外等概念。 通常,编程语言的模型语法应该足够简单,以利用语法来研究程序分析问题。 但是,语法应该足够强大,以表达有关编程语言的重要特征。文献[29,30]中使用的Android语法功能强大但不够简单。 当使用文献[29,30]的语法开发针对Android应用程序的分析时,这没有帮助。 本文提出的语法克服了这个问题。

在文献[22]中,介绍了Android应用程序重要概念的操作语义,包括一些Dalvik字节码的命令。 此外,活动间通信技术在[22]中进行了部分建模。 Android [22]提供的语法很简单,但功能不够强大,因为它只考虑使用218个Dalvik字节码指令[12]中的一组12条指令。 例如,处理数组的指令,比如“newarray”,不被考虑; 这些都在我们的语义中涵盖。 然而,文献[30]中报道了“newarray”指令用于1700个应用样本中95.47%的样本。 文献[22]中也没有包含浪费一个周期换向的指令nop。 nop对于许多静态分析很重要,因为它可以用来替代一些不必要的指令来优化代码。

在文献[10]中,语义思想被用来制定一种方法,Apposcopy,来识别一个常见的Android恶意软件(在一个类中)。 私人信息可以被这个恶意软件窃取。 Apposcopy基于以下两个事实。 通过使用高级语言制定的签名来捕获恶意软件的语义特征。使用静态分析工具可以检测到恶意软件的特征。 在文献[3]中,引入了一种以动态验证机制的形式监控正在运行的应用程序的机制。

在文献[4]和Android模拟Android应用程序的类型化模型中,引入了操作语义。本文的目的是研究以数据流安全特性为重点的应用程序安全性。 语义和类型体系构成了Android应用程序必要的安全问题。

基于异步事件和多线程编程的概念与Android应用程序的编程模型相结合。 这当然能够产生有效的应用程序。 然而,任意调度异步任务和线程命令的意外交错很容易导致复杂的编程错误[17]。 文献[17]中介绍了Android编程模型中并发性的语义。 语义模型用于使用“发生之前”关系的概念来构建运行时间比赛检测方法。

在文献[34]中,为了监视Android应用程序VetDroid的有效操作,提出了一个动态程序分析。 VetDroid的重点是真正使用给予应用程序的权限。 因此,VetDroid以系统的方式模拟许可使用; 这包括对应用程序的资源使用进行建模。 当然,这种分析可以直接应用揭示安全漏洞。

另一个针对Android应用程序DroidSafe的程序分析在文献[13]中引入了对信息进行静态的跟踪或发现的可能性.roidSafe可以支持静态分析和Android运行时系统。 这导致了DroidSafe的广泛应用。 存根(stub)的概念(用于分析代码时,其语义不仅仅由Java确定)的概念被用来实现上述混合。

在文献[32]识别隐式信息流(IIF)的问题中,使用了针对Android字节码的程序分析概念。 分析还旨在制止安全威胁。 应用程序分析是面向控制迁移语义的分析。 分析设法识别了许多类型的IIF。 还使用概念证明(PoC)研究了IIF的可利用性[16]。

在文献[31]中,解释了用于分析控制流的经典技术不适用于Android应用程序。 这是由于Android应用程序的事件驱动和基于框架的本质。 同样在文献[31]中,用户事件驱动的部分与其宏组一起研究。 这是通过应用代码和Android框架完成的。本文将考虑事件处理程序和生命周期宏提供了这些概念的表示。 表示形式是对上下文敏感的静态分析。

5 结论

本文向Android应用程序展示了AndroidS的操作语义。 语义相对于相关工作具有相对优势。 在语义学中考虑的Dalvik和宏指令集是精心设计的。 语义规则很简单但准确。 语义表达包含了由于作为Android应用程序主要组件的活动的生命周期而导致的状态转换。 语义也表达了Android应用程序对用户手势的反应。 未来工作的一个重要方向是详细展示语义如何用于表示Android应用程序的任何常见静态分析。

参考文献

  1. Dalvik字节码。https://source.android.com/devices/tech/dalvik/dalvikbytecode.html。 2016年2月1日访问
  2. Dalvik文档镜像。http://www.milk.com/kodebase/dalvik-docs-mirror/。 2016年2月访问
  3. Bauer,A.,Kuml;uster,J.-C.,Vegliach,G .:运行时验证符合android安全.在:Goodloe,A.E.,Person,S.(编辑)NFM 2012.LNCS,第7226卷,第174-180页。 施普林格,海德堡(2012年)
  4. Chaudhuri,A .:基于语言的安全机器人.在:

    全文共11050字,剩余内容已隐藏,支付完成后下载完整资料


    资料编号:[13045],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。