Skip to content

Tr0e/FlowDroidSkill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

前言

这是一个基于 FlowDroid 和 Jadx 的自动化 APK 安全分析工具。它能够对 APK 进行静态污点分析,检测潜在的数据泄露路径,并生成包含真实源代码上下文的详细安全报告。

核心功能

  1. 自动化反编译:集成 Jadx 工具,自动将 APK 反编译为 Java 源代码,为代码审计提供基础。
  2. 静态污点分析:利用 FlowDroid 强大的静态分析引擎,扫描 APK 中从敏感数据源(Source)到潜在泄露点(Sink)的传播路径。
  3. 智能源代码提取
    • 解析 FlowDroid 生成的 XML 分析结果。
    • 根据污点传播路径,智能提取涉及的所有关键方法的真实源代码(不仅仅是 Sink 点)。
    • 自动过滤系统类(如 android.*, java.*),专注于应用自身的业务逻辑代码。
  4. 详细报告生成:生成 Markdown 格式的安全分析报告,包含:
    • 漏洞摘要(Source/Sink 类型)。
    • 完整的污点传播路径。
    • 涉及方法的完整源代码片段,并标注漏洞行号。
    • 报告文件自动添加时间戳,防止覆盖。

项目结构

.
├── analyze_apk.py          # 主程序脚本
├── parse_result.py         # 结果解析与源码提取模块
├── SourcesAndSinks.txt     # FlowDroid 分析所需的源和汇定义文件
├── Tools/                  # 工具依赖目录
│   ├── android.jar         # Android SDK 核心库(用于 FlowDroid 分析)
│   ├── jadx-1.5.3-all.jar  # Jadx 反编译工具(Github不允许上传100Mb以上文件,请手动下载:https://github.com/skylot/jadx/releases)
│   └── soot-infoflow-cmd-2.13.0-jar-with-dependencies.jar # FlowDroid 命令行工具
└── sootOutput/             # 分析结果输出目录

环境依赖

  • Python: 3.x
  • Java: JDK 8 或更高版本(运行 FlowDroid 和 Jadx 需要)
  • Python 库:
    • lxml: 用于解析 XML 报告。
    • javalang: 用于解析 Java 源代码 AST,精准提取方法代码。

安装 Python 依赖:

pip install lxml javalang

工作原理

  1. 初始化:脚本首先检查必要的工具(Jadx, FlowDroid, android.jar)是否存在。为了确保 FlowDroid 能够正确找到 Android 平台库,脚本会自动创建一个临时的 platforms/android-34 目录并将 android.jar 复制进去。
  2. 反编译:使用 java -jar Tools/jadx.jar 命令将目标 APK 反编译到临时源码目录。
  3. 污点分析:调用 java -jar Tools/soot-infoflow-cmd.jar 对 APK 进行分析,生成 XML 格式的中间结果。
  4. 结果处理
    • parse_result.py 读取 XML 结果。
    • 遍历每一个检测到的数据流路径。
    • 对于路径中的每一个方法节点,在反编译的源码目录中查找对应的 Java 文件。
    • 使用 javalang 解析 Java 文件,提取该方法的完整源代码。
  5. 报告输出:最终生成 security_analysis_report_YYYYMMDD_HHMMSS.md 文件。

使用方法

  1. 将待分析的 APK 文件准备好。
  2. 修改 analyze_apk.py 文件,设置 APK_PATH 变量指向你的 APK 文件路径:
    # analyze_apk.py
    APK_PATH = r"d:\LLM\FlowDroidSkill\ovaa.apk" # 修改为你的 APK 路径
  3. 运行分析脚本:
    python analyze_apk.py
  4. 查看结果: 分析完成后,进入 sootOutput 目录查看生成的 Markdown 报告。

注意事项

  • 内存消耗:FlowDroid 分析大型 APK 可能需要较大的内存,请确保机器有足够的可用内存。脚本默认配置了 -Xmx8g(在 analyze_apk.py 中)。
  • 分析时间:根据 APK 的复杂度和大小,分析过程可能持续几分钟到几十分钟。
  • 临时文件:反编译的源码和临时平台目录会在脚本执行结束后自动清理(部分清理逻辑在操作系统层面可能有所差异,建议定期检查临时文件夹)。

About

基于FlowDroid构建Android APK漏洞智能分析工具(关注Skill分支),By Tr0e

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages