一种实时高效的Android应用审计方法——AppAudit

Effective Real-time Android Application Auditing, 2015 IEEE Symposium on Security and Privacy, 2015年5月 [1]

http://www.ieee-security.org/TC/SP2015/papers/6949a899.pdf

1.1. 背景与贡献

移动应用程序现在变得更复杂,有许多第三方库和成千上万的功能,并且可以访问个人敏感数据和网络,这也导致了个人隐私数据泄露的不断增多。当前应用审计方法主要是静态分析。静态分析由于不可扩展的分析结构,可能遇到代码库的可扩展问题。因此,静态分析通常很耗时,尤其是大型应用。同时,静态分析可能产生误报,因为在实际执行时有一些分析代码路径不可能发生。这些缺点限制了应用审计方法的可用性。因此,针对现有Android应用存在用户隐私数据泄露的问题。

加拿大麦吉尔大学和上海交通大学的研究人员提出了一种基于静态分析和动态分析相结合的应用审计方法——AppAudit。静态分析采用一种粗略的判断方法,保证分析的速度,关于动态分析本文提出了一种基于ApproximatedExecution(近似执行)的动态分析方法,在只执行应用一部分代码的同时,有效猜测未知变量,保证分析路径尽可能完全。AppAudit在实际应用中发现了30个数据泄露漏洞,其中很大一部分是由于第三方广告模块通过非加密HTTP连接传输用户数据导致的,充分说明了该AppAudit对应用商店、应用开发者和终端用户的意义。

1.2. 架构

为了解决误报和有效分析,AppAudit采用静态分析和动态分析相结合的方法。如图1为AppAudit架构和工作流。静态API使用分析目的在于筛选出可疑函数和缩小分析范围。然后,AppAudit采用动态分析执行每个功能的字节码去确认真实的数据泄露。近似执行是执行可疑函数字节码指令的动态分析以及在执行期间隐私数据可能被泄露的报告。多个可疑的功能可以被并行的检查,这样极大地提高了性能。

图1 :AppAudit架构和工作流

1.3. 实验

在以下三个公开数据集(共1400个)的实验结果表明,AppAudit方法的隐私泄露检测率高达99.3%,并实现了0误报。相比现有工作,AppAudit方法的检测速度提高了8.3倍,并且内存占用减少了90%。

图2:检测准确性的比较

图3 检测精确度

图4 平均分析时间

图5应用程序审计使用情况和需求

1.4. 专家观点

AppAudit审计方法采用了静态分析和动态分析相结合的方式。本文提出了一种基于Approximated Execution(近似执行)的动态分析方法。此方法值得借鉴。

AppAudit审计方法与以前的方法相比,隐私泄露检测率显著提高,误报减少。尤其对于一些大型应用,检测速度有了很大的提升,并且减少了内存占用。移动设备中携带大量的个人信息,该方法的提出能有效的减少和控制隐私泄露问题,起到了保护用户隐私的作用。AppAudit对应用商店、应用开发者和终端用户的意义都相当重大。

该成果可用于手机应用商店中,以更好地改善手机生态的安全性。

1.5. 参考文献

[1] Effective Real-time Android Application Auditing, 2015 IEEE Symposium on Security and Privacy, May2015.

时间: 2024-10-10 08:49:23

一种实时高效的Android应用审计方法——AppAudit的相关文章

高效开发Android App的10个建议

假如要Google Play上做一个最失败的案例,那最好的秘诀就是界面奇慢无比.耗电.耗内存.接下来就会得到用户的消极评论,最后名声也就臭了.即使你的应用设计精良.创意无限也没用. 耗电或者内存占用等影响产品效率的每一个问题都会影响App的成功.这就是为什么在开发中确保最优化.运行流畅而且不会使Android系统出问题是至关重要的了.这里不需要讨论高效编程,因为我们不会关心你写的代码是否能够经得起测试.即使高效的代码也是需要时间来运行.今天这篇文章我们就讲讲怎么尽可能地缩短运行时间,以及如何开发

android在代码中四种设置控件背景颜色的方法(包括RGB)

转载请注明出处: http://blog.csdn.net/fth826595345/article/details/9208771  TextView tText=(TextView) findViewById(R.id.textv_name); //第1种: tText.setTextColor(android.graphics.Color.RED);//系统自带的颜色类 // 第2种: tText.setTextColor(0xffff00ff);//0xffff00ff是int类型的数据

如何编写高效的Android代码

时间是很宝贵的东西,在编写Android代码的时候尽可能的编写出高效的Android代码可以节省你很多的时间,让你有时间去泡妞.去陪女朋友.去陪基友,去吃饭.去娱乐.去睡觉!毕竟,谁都不想整夜整夜的加班,然后还乱吼:时间都去哪了?!下面就整理了怎样提高效率,编写高效的Android代码!看到这,偷笑了吧,表掩饰,我已看到! 对于如何判断一个系统的不合理,这里有两个基本的原则: 一.不要做不必要做的事情. 二.尽可能的节省内存的使用优化链接: http://c.tieba.baidu.com/p/

编写高效的Android代码

为什么在这就意味着没有多少剩余空间给你去浪费了,因此,在你写Androi编写Android程序时要时刻考虑执行的效率,这些系统不是想象中的那么快,并且你还要考虑它电池的续航能力.写程序的时候,要尽可能的使你的代码优化而提高效率. 对于如何判断一个系统的不合理,这里有两个基本的原则: 1.不要做不必要做的事情. 2.尽可能的节省内存的使用. 下面是常用的几点优化建议: 1.尽可能避免创建对象(Object) 因为对象的创建并不是没有代价的,如果你在一个用户界面的循环中分配一个对象,你不得不强制的进

将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)

网上翻了几百篇博客,看了半天,要不就是写的乱七八糟看不懂,要不就是隐藏了一些细节,要不就是实现不了,最后还是在Android官网上看明白了,而且说得有条有理,以后遇到不懂的一定要先翻官网. 参考资料:https://developer.android.com/studio/projects/add-native-code.html?utm_source=android-studio#link-gradle 1. 导入eclipse到Android studio 1. 导入工程: 点击如下所示:

android图片处理方法(转)

//压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中 int options = 100; while ( baos.toByteArra

Android网络访问方法(二)---HttpURLConnection

“你是我的定格,我是你的过客.”------Android,我来了! 最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内.在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助.下面的代码简单描述了如何使用HttpURLConnecti

海典ERP与汉码盘点机对接门店实时盘点计划及程序使用方法,实时盘点,云盘点方案

1.     PDA手持设备按键说明 [Tab]键:使输入焦点在控件上切换. [ESC]键:弹出是否退出确认对话框,退出操作界面或程序. [OK]键:确认输入或选择,进入下一步操作. [C]键:删除键,或者回退上一步操作. [#]键:快速切换和隐藏/显示输入法对.通过[#]号键可以在各种输入法之间进行切换. 2.     门店盘点前准备工作 2.1.  登记帐存并生成盘点单号和盘点页码(在ERP管理软件中) 1.       在ERP医药管理软件上进行盘点登记:注:每次盘点之前首先要对将要盘点的

Android多线程编程方法及开启步骤

作者:华清远见讲师 实现线程的两种方式 使用继承的方法 class MyThread extends Thread{ @Override public void run(){ //处理具体的逻辑 } } 要启动这个线程,在主线程中新建一个该实例,调用其start()方法即可. 使用实现Runnable借口的方式 class MyThread implements Runnable{ @Override public void run(){ //处理具体的逻辑 } } 开启现成时,使用: MyTh