Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
droidlysis — Android应用的自动化预分析工具,可反汇编样本,通过可配置模式匹配提取属性,并组织输出以加速逆向工程和恶意软件分析。 | Kitploit
工具/GitHubGitHub/cryptax/droidlysis
Android安全静态分析逆向工程信息收集恶意软件分析移动安全
GitHubcryptax/droidlysis

droidlysis

Android应用的自动化预分析工具,可反汇编样本,通过可配置模式匹配提取属性,并组织输出以加速逆向工程和恶意软件分析。

查看仓库
3114911天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

DroidLysis

DroidLysis 是一个 Android 应用预分析工具:它执行我们在逆向工程开始时通常做的重复且枯燥的任务。它对 Android 样本进行反汇编,将输出组织到目录中,并搜索代码中可疑的关注点。输出有助于逆向工程师加快分析的前几步。

DroidLysis 可用于 Android 包(apk)、Dalvik 可执行文件(dex)、Zip 文件(zip)、Rar 文件(rar)或文件目录。

安装 DroidLysis

  1. 安装必要的系统包
root@kitploit:~
sudo apt-get install default-jre git python3 python3-pip unzip wget libmagic-dev libxml2-dev libxslt-dev
  1. 安装 Android 反汇编工具
  • Apktool,
  • Baksmali,以及可选地
  • Dex2jar 和
root@kitploit:~
$ mkdir -p ~/softs
$ cd ~/softs
$ wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.9.3.jar
$ wget https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.5.2.jar
$ wget https://github.com/pxb1988/dex2jar/releases/download/v2.4/dex-tools-v2.4.zip
$ unzip dex-tools-v2.4.zip 
$ rm -f dex-tools-v2.4.zip 
  1. 从 Git 仓库(推荐)或 pip 获取 DroidLysis

在 Python 虚拟环境(python3 -m venv 或 pyenv 虚拟环境等)中从 Git 安装。

root@kitploit:~
$ python3 -m venv venv
$ source ./venv/bin/activate
(venv) $ pip3 install git+https://github.com/cryptax/droidlysis

另外,你也可以直接从 PyPi 安装 DroidLysis(pip3 install droidlysis)。

  1. 配置 conf/general.conf。特别要确保将 /home/axelle 替换为你自己的目录。
root@kitploit:~
[tools]
apktool = /home/axelle/softs/apktool_2.9.3.jar
baksmali = /home/axelle/softs/baksmali-2.5.2.jar
dex2jar = /home/axelle/softs/dex-tools-v2.4/d2j-dex2jar.sh
keytool = /usr/bin/keytool
...
  1. 运行:
root@kitploit:~
python3 ./droidlysis3.py --help

配置

配置文件是 ./conf/general.conf(你可以使用 --config 选项切换到其他文件)。在这里配置各种外部工具的位置(例如 Apktool)、模式文件的名称(默认为 ./conf/smali.conf、./conf/wide.conf、./conf/arm.conf、./conf/kit.conf)以及数据库文件的名称(仅在你指定 --enable-sql 时使用)。

请务必指定反汇编工具的正确路径,否则 DroidLysis 无法找到它们。

使用

DroidLysis 使用 Python 3。启动并获取选项:

root@kitploit:~
droidlysis --help

例如,在 Signal 的 APK 上测试:

root@kitploit:~
droidlysis --input Signal-website-universal-release-6.26.3.apk --output /tmp --config /PATH/TO/DROIDLYSIS/conf/general.conf

DroidLysis 输出:

  • 控制台上的摘要(见上图)
  • 解压并预处理后的样本,位于输出目录的子目录中。子目录以样本的文件名和 sha256 哈希命名。例如,如果分析 Signal 应用并设置 --output /tmp,分析结果将写入 /tmp/Signalwebsiteuniversalrelease4.52.4.apk-f3c7d5e38df23925dd0b2fe1f44bfa12bac935a6bc8fe3a485a4436d4487a290。
  • 一个数据库(默认为 SQLite droidlysis.db),包含检测到的属性。

选项

使用 droidlysis --help 获取使用说明

  • 输入可以是一个文件或一个目录(会递归扫描)。DroidLysis 知道如何处理 Android 包、DEX、ODEX 和 ARM 可执行文件、ZIP、RAR。对于其他类型的文件,DroidLysis 不会失败(除非存在 bug...),但无法理解其内容。

  • 处理文件目录时,通常将已处理的样本移动到其他位置以了解哪些已被处理,这很有用。此功能由 --movein 选项处理。此外,如果你只关心统计信息,你可能希望清除包含每个样本详细信息的输出目录:这是 --clearoutput 选项。如果希望将所有统计信息存储在 SQL 数据库中,请使用 --enable-sql(参见此处)

  • 默认情况下,DroidLysis 的分析不会检查已知的第三方 SDK,例如不会报告这些 SDK 中的可疑活动。如果你希望检查它们,请使用 --no-kit-exception 选项。这通常会导致样本检测到更多属性,因为 SDK(例如广告)会使用许多标记的 API(获取 GPS 位置、获取 IMEI、获取 IMSI、HTTP POST 等)。

样本输出目录(--output DIR)

该目录包含(如果适用):

  • 可读的 AndroidManifest.xml
  • 可读的资源文件 res
  • 库 lib、资源 assets
  • 反汇编的 Smali 代码:smali(及其他)
  • 包元信息:META-INF
  • 简单解压后的包内容:./unzipped
  • DEX 可执行文件 classes.dex(及其他),并转换为 jar:classes-dex2jar.jar,以及解压后的目录:./unjarred

以下文件由 DroidLysis 生成:

  • autoanalysis.md:列出 DroidLysis 检测到的每个模式及其位置。
  • report.md:与控制台输出相同。

如果不需要生成样本输出目录,请使用 --clearoutput 选项。

从 Exodus 等导入追踪器(--import-exodus)

root@kitploit:~
$ python3 ./droidlysis3.py --import-exodus --verbose
Processing file: ./droidurl.pyc ...
DEBUG:droidconfig.py:Reading configuration file: './conf/./smali.conf'
DEBUG:droidconfig.py:Reading configuration file: './conf/./wide.conf'
DEBUG:droidconfig.py:Reading configuration file: './conf/./arm.conf'
DEBUG:droidconfig.py:Reading configuration file: '/home/axelle/.cache/droidlysis/./kit.conf'
DEBUG:droidproperties.py:Importing ETIP Exodus trackers from https://etip.exodus-privacy.eu.org/api/trackers/?format=json
DEBUG:connectionpool.py:Starting new HTTPS connection (1): etip.exodus-privacy.eu.org:443
DEBUG:connectionpool.py:https://etip.exodus-privacy.eu.org:443 "GET /api/trackers/?format=json HTTP/1.1" 200 None
DEBUG:droidproperties.py:Appending imported trackers to /home/axelle/.cache/droidlysis/./kit.conf

来自 Exodus 但未包含在初始 kit.conf 中的追踪器将被追加到 ~/.cache/droidlysis/kit.conf。比较两个文件,检查你希望添加哪些追踪器。

SQLite 数据库{#sqlite_database}

如果你想处理一个样本目录,你可能希望将 DroidLysis 发现的属性存储在数据库中,以便轻松解析和查询结果。在这种情况下,请使用 --enable-sql 选项。这将自动将所有结果转储到名为 droidlysis.db 的数据库中,表名为 samples。表中的每条记录对应一个样本。每一列是 DroidLysis 追踪的属性。

例如,检索数据库中的所有文件名、SHA256 哈希和 Smali 属性:

root@kitploit:~
sqlite> select sha256, sanitized_basename, smali_properties from samples;
f3c7d5e38df23925dd0b2fe1f44bfa12bac935a6bc8fe3a485a4436d4487a290|Signalwebsiteuniversalrelease4.52.4.apk|{"send_sms": true, "receive_sms": true, "abort_broadcast": true, "call": false, "email": false, "answer_call": false, "end_call": true, "phone_number": false, "intent_chooser": true, "get_accounts": true, "contacts": false, "get_imei": true, "get_external_storage_stage": false, "get_imsi": false, "get_network_operator": false, "get_active_network_info": false, "get_line_number": true, "get_sim_country_iso": true,
...

属性模式

DroidLysis 检测的内容可以在 ./conf 目录中的文件中配置和扩展。

一个模式由以下部分组成:

  • 一个 标签 名称:例如 send_sms。用于命名属性。在 .conf 文件中必须唯一。
  • 一个 模式:这是一个要匹配的正则表达式。例如:;->sendTextMessage|;->sendMultipartTextMessage|SmsManager;->sendDataMessage。在 smali.conf 文件中,此正则表达式匹配 Smali 代码。在这个例子中,代码中有三种发送 SMS 消息的方式:sendTextMessage、sendMultipartTextMessage 和 sendDataMessage。
  • 一个 描述(可选):解释属性的重要性及其含义。
root@kitploit:~
[send_sms]
pattern=;->sendTextMessage|;->sendMultipartTextMessage|SmsManager;->sendDataMessage
description=Sending SMS messages

导入 Exodus Privacy 追踪器

Exodus Privacy 维护了一个各种 SDK 的列表,这些 SDK 在分析中通过 conf/kit.conf 来排除。将 --import_exodus 选项添加到 droidlysis 命令行:这将解析 Exodus Privacy 已知但尚未存在于你的 kit.conf 中的追踪器。最后,它会将所有新的追踪器 追加 到 ~/.cache/droidlysis/kit.conf。

之后,你可能希望对 kit.conf 文件进行排序:

root@kitploit:~
import configparser
import collections
import os

config = configparser.ConfigParser({}, collections.OrderedDict)
config.read(os.path.expanduser('~/.cache/droidlysis/kit.conf'))
# 所有节按字母顺序排序
config._sections = collections.OrderedDict(sorted(config._sections.items(), key=lambda t: t[0] ))
with open('sorted.conf','w') as f:
    config.write(f)

用于 smali 属性的 JEB 脚本

此脚本帮助你在 JEB UI 中搜索包含与 smali 模式匹配的代码的方法,并轻松导航到这些函数。当你加载脚本并选择 DroidLysis 分析文件中的 details.md 文件时,会出现一个搜索框。移动后,你可以通过使用最近脚本执行快捷键再次调出搜索窗口。

  • JEB > File > Scripts > Script selector > script/DroidlysisSearch.py
  • JEB > File > Scripts > Run last Script

更新记录

  • v3.4.7 - 移除了 Procyon,集成了多个 PR #24 和 #25,添加了更详细的无障碍滥用检测
  • v3.4.6 - 检测清单中自动加载 APK 的功能
  • v3.4.5 - 创建可写入的用户 kit.conf 文件
  • v3.4.4 - Bug 修复 #14
  • v3.4.3 - 使用配置文件
  • v3.4.2 - 添加导入 Exodus Privacy 追踪器的功能
  • v3.4.1 - 移除了对 Androguard 的依赖
  • v3.4.0 - 支持 Multidex
  • v3.3.1 - 改进 Base64 字符串检测
  • v3.3.0 - 将数据转储为 JSON
  • v3.2.1 - IP 地址检测
  • v3.2.0 - Dex2jar 为可选组件
  • v3.1.0 - Base64 字符串检测
下载工具