FlowDroid: 精确的上下文,流,字段, 对象敏感和生存周期感知的污染分析

FlowDroid是一种用于Android应用的静态分析工具,专注于上下文、流、字段、对象敏感和生存周期感知的污染分析。通过虚拟化的main函数构建控制流图,并采用IFDS框架进行路径不敏感的前向taint分析,找出数据流从source到sink的传播路径。同时,FlowDroid还包含了向后分析以处理别名,提高分析精度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本blog是对http://sseblog.ec-spride.de/tools/flowdroid/项目的翻译和说明,参考的是主页上列的papers。

一个Android app可包含多个组件,如activity, service, content-provider 和broadcast receiver。其中activity负责成像,也就是人机交互,是我们分析的主要入口和场所。不像传统的Java程序,Android app里不带main函数,我们无法简单的像之前一样找到程序的入口和出口来画控制流图,但app里每个组件都有函数来反应此组件的生命周期(lifecycle),我们可以依托lifecycle来画出控制流图。我们先来看下一个activity里的lifecycle是什么样的,

(图片截取自AppIntent, CCS'13)

从图中可以看出activity可以从任何结点按任何顺序执行,并没有传统的单入口单出口结构。除了lifecycle函数activity里还可以带有各种event handler的callbacks,用于处理像UI交互之类的事件。callbacks可以看作居住在lifecycle函数间。

为了生成给定app的控制流图,我们可以对其生成一个虚拟main函数。通过一个例子我们能很清楚的看清背后的思想。


评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值