作为一个开放的移动应用程序平台,Android,无论是面临严重安全问题的系统还是APK应用程序,对于面临应用程序安全的威胁,检测技术都在不断发展,但是基于静态分析方法,烟灰和flowdroid始终无法绕过。前者是前者。AJava语言分析工具还支持对APK文件的分析,后者是一个污渍分析工具,它生成图形跟踪污渍传输路径。LLET介绍这两个以帮助读者开始迅速地。
烟灰是Java优化框架,它提供了4个中间代码来分析和转换字节码。
烟灰提供的输入格式是:Java,Android,类等。
输出格式为:Java字节码,Android字节码,Jimple,Jasmin,Shimple,Baf等。这些实际业务通常以其他格式使用,并且还有其他格式,此处未列出。
凭借Soot分析Android的能力,我们可以进一步分析Android应用程序的安全漏洞,例如安全问题,例如组件暴露和加密算法。
您可以下载最新的烟灰罐软件包。我在版本4.1.0中下载了sootclassses-trunk-jar-with-with-with依赖性。该包应带来烟灰所需的所有依赖项。下载后,使用PowerShell输入JAR文件所在的文件夹,您可以输入以下命令:
Java -cp sootclasses-trunk-jar-with依赖性。
首先,让我们看一下SOOT如何分析Java代码(以下是类文件分析的分析):
第一步是配置烟灰环境信息
第二步是设置烟灰的配置属性(每个属性描述都可以涉及GIT上的官方文档信息)
步骤3,获取代码信息
现在,我们正在研究SOOT如何分析Android APK
同样,我们可以获取APK的代码信息,包括类,方法,属性等,这些信息将进一步分析并基于这些分析并应用于实际检测业务。
使用烟灰对Android应用进行静态分析,该应用程序目前包括主要检测方案:
FlowDroid(github链接)是对Android应用的染色分析的最佳工具之一。染色分析的目的实际上非常简单,以检查是否有从污渍来源到泄漏点的数据流。它的优势是数据具有较高的数据准确性。它可以对上下文,流动,对象和字段敏感,这使得分析结果非常准确。
精确分析有一些原因:
1.它建立了一个相对完整的Android语句的施工周期,例如在活动中进行。在活动中,通过将Dummymymain作为分析入口进行抽象来支持对Android应用的分析;
2.它实现了准确的数据流分析,其中包括面向前面的染色分析和后来的名称分析。实际上是基于Heros的数据流分析框架实施的。这是更复杂的算法。我的理解是,这两个分析符合上下文的敏感性和敏感性。后来为分析算法提供对象敏感和字段敏感的支持;
3.它支持简单的Nativecode染色分析
当然,有一些缺点,包括:
1.无法分析组件的污渍传播(意图)
2. cissed流问题
3.本地代码不能得到完美支持
尽管有一些缺点,但在主要会议上已经提出了数十种新的静态染色分析算法,与FlowDroid相比,在某些数据集或DroidBench上具有更快的操作速度和更好的准确性。可以在公共资源中获得,因为纸张提供的许多源代码几乎没有评论和文件,从而产生了极其困难的使用。此外,因此,使用这样的程序不可避免地会遇到错误。相反,FlowDroid作为连续维护的框架,具有一定的稳定保证。同时,其强大的功能和相对完整的文档对底部的烟灰框架使FlowDroid的难度变得困难。
有两种类型的FlowDroid配置。您可以直接下载相关的JAR软件包,也可以使用Maven配置依赖项。可以在FlowDroid的Github上下载JAR软件包。只能提供烟灰infoflow-android-classes.jar和烟灰 - 融合级。另外,依赖性依赖性。Jar,将上述三个软件包添加到项目依赖性中,完成FlowDroid的配置
整个FlowDroid的顶层是soot.jimple.infoflow.android.setupapplication。大多数设置和操作都可以通过操作此类执行。SetUpapplication在调用RunInfoflow()时可以传递配置参数,或者可以将配置参数传递到配置参数中时,在初始化设置或初始化时,可以将其传递到配置参数。RunInfoflow函数具有多种不同的参数类型。您可以根据情况检查源代码。我在这里使用的一种方法:
关于来源,水槽
污渍分析中的源点表示污渍分析的起点,接收点表示污渍分析的终点。换句话说,FlowDroid将在“扫描”,“扫描”,“ scan” APK之后从源点分析数据流。并在数据流“流到”接收点时标记它。流质中的源和下沉是类方法。有些文件可以在soot-infoflow-android下提供源和sinks.txt。当时流动型可能涉及隐私数据是一些API。很容易看到它的语句。文件格式:
每行都是一个独立的语句,从开始时开始的注释可以添加一个根据应用程序需求删除源和下沉的语句。
FlowDroid输出结果仅是数据流信息。它需要结合我们的自定义和下沉信息以产生业务价值。通常,有以下情况:
本文分享了华为的真诚云社区,作者:Wuyang River Program Ape。