概述
安装
工具列表
内容详情
替代品
什么是APK Security Guard MCP Suite?
这是一个专为Android应用安全分析设计的自动化工具套件,它将5个主流安全分析工具(JEB、JADX、APKTOOL、FlowDroid、MobSF)统一集成到MCP标准接口中,通过'多专家决策'模型提供全面、可靠的APK安全检测服务。如何使用APK Security Guard?
只需提供APK文件路径,系统会自动调用所有工具进行并行分析,然后智能整合结果,生成包含漏洞频率统计和风险评估的综合报告。适用场景
适合安全研究人员进行漏洞挖掘、开发人员进行代码审计、渗透测试人员进行安全评估,以及对APK安全性有要求的任何用户。主要功能
如何使用
使用案例
常见问题
相关资源
安装
{
"mcpServers": {
"Jadx MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JADX-MCP\\fastmcp_adapter.py"
],
"transportType": "stdio"
},
"JEB MCP Server": {
"disabled": false,
"timeout": 1800,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JEB-MCP\\server.py"
],
"transportType": "stdio"
},
"FlowDroid MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"FlowDroid-MCP\\script\\flowdroid_mcp.py"
],
"transportType": "stdio"
},
"MobSF MCP Server": {
"disabled": false,
"timeout": 60,
"command": "Nodejs\\node.exe",
"args": [
"MobSF-MCP\\build\\index.js"
],
"env": {
"MOBSF_URL": "http://localhost:8000",
"MOBSF_API_KEY": "your_api_key_here"
},
"transportType": "stdio"
},
"APKTOOL MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"APKTOOL-MCP\\apktool_mcp_server.py"
],
"transportType": "stdio"
}
}
}
{
"mcpServers": {
"apk_analysis": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"CrossValidation_APKAnalysis.py"
],
"transportType": "stdio"
}
}
}🚀 APK安全防护MCP套件
本项目旨在为安卓APK安全分析与漏洞检测提供一站式自动化解决方案。通过集成JEB、JADX、APKTOOL、FlowDroid、MobSF等主流反编译、静态分析、动态分析工具,并将其统一为MCP(模型上下文协议)标准API接口,极大提升了安全分析的自动化程度与效率。适用于对APK安全有需求的安全研究人员、渗透测试人员、开发者等用户。
🚀 快速开始
环境依赖
本项目需要使用Python 3.11及以上版本,同时需要安装Node.js。
安装步骤
为避免全局环境中的依赖冲突,强烈建议使用Python虚拟环境来管理项目依赖。以下是详细的安装步骤:
- 创建新的虚拟环境:
# 对于Windows系统
python -m venv myenv
myenv\Scripts\activate
# 对于Linux/MacOS系统
python -m venv myenv
source myenv/bin/activate
- 确认虚拟环境已激活(命令提示符中应显示
(myenv))后,安装项目依赖:
pip install -r requirements.txt
- 若需要使用MobSF相关API,需单独安装Node.js依赖,进入
MobSF-MCP目录:
npm install -g mobsf-mcp
⚠️ 重要提示
- 建议使用Python 3.11版本。
- 每次开始新的工作会话时,记得激活虚拟环境。
插件或脚本安装建议
JEB MCP脚本
该脚本需要预先放置在JEB工具的脚本文件夹中。
- 打开JEB,导航至
文件 > 脚本 > 脚本选择器。 - 从脚本列表中选择并运行
MCP.py。 - 若脚本成功加载并运行,你应该会在JEB输出控制台看到以下消息:
[MCP] 插件已加载
[MCP] 插件正在运行
[MCP] 服务器已在 http://localhost:16161 启动
JADX MCP插件
- 构建和运行该插件需要Java 17。
- 在
JADX-MCP根目录下,运行:
./gradlew build
- 构建完成后,插件JAR文件将生成在以下路径:
plugin/build/libs/JADX-MCP-Plugin.jar
- 你也可以直接使用预构建的JAR包: 下载JADX-MCP-Plugin.jar
- 将JAR文件复制到
jadx-gui安装目录的lib文件夹中:
cp plugin/build/libs/JADX-MCP-Plugin.jar <jadx-gui安装路径>/lib/
APKTool
在Windows系统上安装APKTool,你可以使用Chocolatey(一款流行的Windows包管理器):
以管理员身份打开PowerShell。
- 运行以下命令安装Chocolatey:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- Chocolatey安装完成后,使用以下命令安装APKTool:
choco install apktool
安装完成后,你可以直接从命令行使用apktool。更多详细信息和高级用法,请参考APKTool官方文档。
MobSF MCP
首先确保已安装MobSF。
如果你希望扩展功能并添加新的API,在项目的MobSF-MCP根目录下运行以下命令:
npm run build
构建完成后,你会在build文件夹中找到生成的index.js和mobsf.js文件。
以管理员身份打开PowerShell。
- 在命令行中设置所需的环境变量:
$env:MOBSF_URL="http://localhost:8000";
$env:MOBSF_API_KEY="your_api_key_here";
- 使用以下命令启动MobSF MCP服务器:
npx mobsf-mcp
FlowDroid
要设置FlowDroid以与此套件一起使用,请按以下步骤操作:
- 从官方发布页面下载FlowDroid的
soot-infoflow-cmd-2.13.0-jar-with-dependencies.jar命令行JAR文件。 - 在
FlowDroid-MCP目录中,找到.env文件。使用文本编辑器打开它,并配置FlowDroid JAR文件的路径。例如:
FLOWDROID_WORKSPACE=../flowdroid_workspace
FLOWDROID_JAR_PATH=/home/user/tools/flowdroid/flowdroid.jar
JAVA_HOME=/usr/lib/jvm/java-11-openjdk
在flowdroid_mcp.py脚本中,FlowDroid依赖于几个关键的环境变量来运行。在运行脚本之前,请确保这些变量已正确配置。
# 第15 - 18行
FLOWDROID_WORKSPACE = os.getenv("FLOWDROID_WORKSPACE", "flowdroid_workspace")
FLOWDROID_JAR_PATH = os.getenv("FLOWDROID_JAR_PATH", "FlowDroid.jar")
JAVA_HOME = os.getenv("JAVA_HOME")
# 第134 - 144行
command = [
"java",
"-jar",
FLOWDROID_JAR_PATH, # 确保路径正确
"-a", apk_path,
"-o", output_dir,
"-p", "Android\\Sdk\\platforms", # 必须指定平台目录
"-s", "FlowDroid-MCP\\script\\SourcesAndSinks.txt", # 必须指定源/汇文件
]
⚠️ 重要提示
- 请将所有路径替换为你系统的实际路径。
- 确保正确指定了Android SDK平台目录。
VSCode Cline扩展配置
要在VSCode中使用cline扩展来使用此项目,请在你的cline配置文件中添加以下配置:
{
"mcpServers": {
"Jadx MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JADX-MCP\\fastmcp_adapter.py"
],
"transportType": "stdio"
},
"JEB MCP Server": {
"disabled": false,
"timeout": 1800,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JEB-MCP\\server.py"
],
"transportType": "stdio"
},
"FlowDroid MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"FlowDroid-MCP\\script\\flowdroid_mcp.py"
],
"transportType": "stdio"
},
"MobSF MCP Server": {
"disabled": false,
"timeout": 60,
"command": "Nodejs\\node.exe",
"args": [
"MobSF-MCP\\build\\index.js"
],
"env": {
"MOBSF_URL": "http://localhost:8000",
"MOBSF_API_KEY": "your_api_key_here"
},
"transportType": "stdio"
},
"APKTOOL MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"APKTOOL-MCP\\apktool_mcp_server.py"
],
"transportType": "stdio"
}
}
}
⚠️ 重要提示
请根据你的实际文件路径和配置(根据你的系统进行调整)进行调整。 请确保在配置中填写你实际的
MOBSF_API_KEY。
✨ 主要特性
- 集成主流反编译、静态分析、动态分析工具,提供一站式自动化解决方案。
- 统一为MCP标准API接口,提升安全分析的自动化程度与效率。
- 采用“多专家决策”模型,提高漏洞发现的全面性和结果的可信度。
📦 安装指南
依赖安装
为避免全局环境中的依赖冲突,强烈建议使用Python虚拟环境来管理项目依赖。以下是详细的安装步骤:
- 创建新的虚拟环境:
# 对于Windows系统
python -m venv myenv
myenv\Scripts\activate
# 对于Linux/MacOS系统
python -m venv myenv
source myenv/bin/activate
- 确认虚拟环境已激活(命令提示符中应显示
(myenv))后,安装项目依赖:
pip install -r requirements.txt
- 若需要使用MobSF相关API,需单独安装Node.js依赖,进入
MobSF-MCP目录:
npm install -g mobsf-mcp
插件或脚本安装
JEB MCP脚本
该脚本需要预先放置在JEB工具的脚本文件夹中。
- 打开JEB,导航至
文件 > 脚本 > 脚本选择器。 - 从脚本列表中选择并运行
MCP.py。 - 若脚本成功加载并运行,你应该会在JEB输出控制台看到以下消息:
[MCP] 插件已加载
[MCP] 插件正在运行
[MCP] 服务器已在 http://localhost:16161 启动
JADX MCP插件
- 构建和运行该插件需要Java 17。
- 在
JADX-MCP根目录下,运行:
./gradlew build
- 构建完成后,插件JAR文件将生成在以下路径:
plugin/build/libs/JADX-MCP-Plugin.jar
- 你也可以直接使用预构建的JAR包: 下载JADX-MCP-Plugin.jar
- 将JAR文件复制到
jadx-gui安装目录的lib文件夹中:
cp plugin/build/libs/JADX-MCP-Plugin.jar <jadx-gui安装路径>/lib/
APKTool
在Windows系统上安装APKTool,你可以使用Chocolatey(一款流行的Windows包管理器):
以管理员身份打开PowerShell。
- 运行以下命令安装Chocolatey:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- Chocolatey安装完成后,使用以下命令安装APKTool:
choco install apktool
安装完成后,你可以直接从命令行使用apktool。更多详细信息和高级用法,请参考APKTool官方文档。
MobSF MCP
首先确保已安装MobSF。
如果你希望扩展功能并添加新的API,在项目的MobSF-MCP根目录下运行以下命令:
npm run build
构建完成后,你会在build文件夹中找到生成的index.js和mobsf.js文件。
以管理员身份打开PowerShell。
- 在命令行中设置所需的环境变量:
$env:MOBSF_URL="http://localhost:8000";
$env:MOBSF_API_KEY="your_api_key_here";
- 使用以下命令启动MobSF MCP服务器:
npx mobsf-mcp
FlowDroid
要设置FlowDroid以与此套件一起使用,请按以下步骤操作:
- 从官方发布页面下载FlowDroid的
soot-infoflow-cmd-2.13.0-jar-with-dependencies.jar命令行JAR文件。 - 在
FlowDroid-MCP目录中,找到.env文件。使用文本编辑器打开它,并配置FlowDroid JAR文件的路径。例如:
FLOWDROID_WORKSPACE=../flowdroid_workspace
FLOWDROID_JAR_PATH=/home/user/tools/flowdroid/flowdroid.jar
JAVA_HOME=/usr/lib/jvm/java-11-openjdk
在flowdroid_mcp.py脚本中,FlowDroid依赖于几个关键的环境变量来运行。在运行脚本之前,请确保这些变量已正确配置。
# 第15 - 18行
FLOWDROID_WORKSPACE = os.getenv("FLOWDROID_WORKSPACE", "flowdroid_workspace")
FLOWDROID_JAR_PATH = os.getenv("FLOWDROID_JAR_PATH", "FlowDroid.jar")
JAVA_HOME = os.getenv("JAVA_HOME")
# 第134 - 144行
command = [
"java",
"-jar",
FLOWDROID_JAR_PATH, # 确保路径正确
"-a", apk_path,
"-o", output_dir,
"-p", "Android\\Sdk\\platforms", # 必须指定平台目录
"-s", "FlowDroid-MCP\\script\\SourcesAndSinks.txt", # 必须指定源/汇文件
]
⚠️ 重要提示
- 请将所有路径替换为你系统的实际路径。
- 确保正确指定了Android SDK平台目录。
VSCode Cline扩展配置
要在VSCode中使用cline扩展来使用此项目,请在你的cline配置文件中添加以下配置:
{
"mcpServers": {
"Jadx MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JADX-MCP\\fastmcp_adapter.py"
],
"transportType": "stdio"
},
"JEB MCP Server": {
"disabled": false,
"timeout": 1800,
"command": "myenv\\Scripts\\python.exe",
"args": [
"JEB-MCP\\server.py"
],
"transportType": "stdio"
},
"FlowDroid MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"FlowDroid-MCP\\script\\flowdroid_mcp.py"
],
"transportType": "stdio"
},
"MobSF MCP Server": {
"disabled": false,
"timeout": 60,
"command": "Nodejs\\node.exe",
"args": [
"MobSF-MCP\\build\\index.js"
],
"env": {
"MOBSF_URL": "http://localhost:8000",
"MOBSF_API_KEY": "your_api_key_here"
},
"transportType": "stdio"
},
"APKTOOL MCP Server": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"APKTOOL-MCP\\apktool_mcp_server.py"
],
"transportType": "stdio"
}
}
}
⚠️ 重要提示
请根据你的实际文件路径和配置(根据你的系统进行调整)进行调整。 请确保在配置中填写你实际的
MOBSF_API_KEY。
📚 详细文档
API文档
JEB MCP
架构基于https://github.com/flankerhqd/jebmcp
✨ 主要API功能:
| API | 描述 |
|---|---|
ping() |
检查JEB MCP服务器是否存活。 |
get_manifest(filepath) |
从APK中获取AndroidManifest.xml内容。 |
get_apk_permissions(filepath) |
提取APK的AndroidManifest.xml中声明的所有权限。 |
get_apk_components(filepath) |
从清单中提取所有四个主要的安卓组件(活动、服务、接收器、提供者)及其属性。 |
get_method_decompiled_code(filepath, method_signature) |
通过其完全限定签名获取特定方法的反编译代码。 |
get_class_decompiled_code(filepath, class_signature) |
通过其完全限定签名获取特定类的反编译代码。 |
get_method_callers(filepath, method_signature) |
列出给定方法的所有调用者。 |
get_method_overrides(filepath, method_signature) |
列出给定方法的所有重写方法。 |
get_apk_info(filepath) |
获取APK的基本信息,如包名、版本和主活动。 |
get_intent_filters(filepath) |
提取活动、服务和接收器的所有意图过滤器(动作、类别、数据)。 |
get_exported_components(filepath) |
列出所有导出的组件(显式或隐式)及其属性。 |
list_broadcast_receivers(filepath) |
列出所有广播接收器及其意图过滤器。 |
参数说明:
filepath应为APK文件的绝对路径。method_signature和class_signature使用Java风格的内部地址,例如方法为Lcom/abc/Foo;->bar(I[JLjava/Lang/String;)V,类为Lcom/abc/Foo;。
JADX MCP
架构基于https://github.com/mobilehackinglab/jadx-mcp-plugin
✨ 主要API功能:
| API | 描述 |
|---|---|
list_all_classes(limit, offset) |
返回APK中所有类名的分页列表。参数:limit(最大结果数,默认250),offset(起始索引,默认0)。 |
search_class_by_name(query) |
搜索包含给定关键字的类名(不区分大小写)。参数:query(字符串)。 |
get_class_source(class_name) |
返回给定类的完整反编译源代码。参数:class_name(完全限定类名,例如com.example.MyClass)。 |
search_method_by_name(method_name) |
搜索所有与提供的名称匹配的方法。返回类和方法对作为字符串。参数:method_name(字符串)。 |
get_methods_of_class(class_name) |
返回指定类中声明的所有方法名。参数:class_name(完全限定类名)。 |
get_fields_of_class(class_name) |
返回指定类中声明的所有字段名。参数:class_name(完全限定类名)。 |
get_method_code(class_name, method_name) |
仅返回类中特定方法的源代码块。参数:class_name(完全限定类名),method_name(字符串)。 |
get_method_signature(class_name, method_name) |
返回方法的完整签名,包括返回类型和参数。参数:class_name(完全限定类名),method_name(字符串)。 |
get_field_details(class_name, field_name) |
返回字段的详细信息,包括其类型和修饰符。参数:class_name(完全限定类名),field_name(字符串)。 |
search_method_by_return_type(return_type) |
按方法的返回类型搜索方法。参数:return_type(字符串)。 |
get_class_hierarchy(class_name) |
返回类的继承层次结构,包括其父类和接口。参数:class_name(完全限定类名)。 |
get_method_calls(class_name, method_name) |
返回特定方法中进行的所有方法调用。参数:class_name(完全限定类名),method_name(字符串)。 |
get_class_references(class_name) |
返回代码库中对特定类的所有引用。参数:class_name(完全限定类名)。 |
get_method_annotations(class_name, method_name) |
返回应用于特定方法的所有注解。参数:class_name(完全限定类名),method_name(字符串)。 |
get_tools_resource() |
从插件中返回所有可用工具及其描述的列表。 |
参数说明:
class_name应为完全限定类名,例如com.example.MyClass。method_name是反编译代码中显示的方法名。limit和offset用于列出类时的分页。query:搜索关键字,用于搜索包含该关键字的类名或方法名。return_type:方法的返回类型,用于按返回类型搜索方法。field_name:字段的名称,用于获取字段的详细信息。
APKTool MCP
架构基于https://github.com/zinja-coder/apktool-mcp-server(Apache 2.0许可证)
✨ 主要API功能:
| API | 描述 |
|---|---|
decode_apk(apk_path, force, no_res, no_src) |
反编译APK文件,提取资源和smali代码。参数:apk_path(APK文件路径),force(强制覆盖),no_res(跳过资源),no_src(跳过源代码)。 |
build_apk(project_dir, output_apk, debug, force_all) |
从解码后的项目重新构建APK。参数:project_dir(项目路径),output_apk(输出路径),debug(包含调试信息),force_all(强制重新构建所有)。 |
clean_project(project_dir, backup) |
清理项目目录以准备重新构建。参数:project_dir(项目路径),backup(清理前创建备份)。 |
get_manifest(project_dir) |
从解码后的项目中获取AndroidManifest.xml内容。参数:project_dir(项目路径)。 |
find_leak_manifest(project_dir) |
在清单中查找没有权限限制的导出组件。参数:project_dir。 |
find_leak_components_source(project_dir, source_dirs) |
查找没有权限的导出组件并定位其源代码。参数:project_dir,source_dirs(源目录列表)。 |
list_smali_directories(project_dir) |
列出项目中的所有smali目录。参数:project_dir。 |
list_smali_files(project_dir, smali_dir, package_prefix) |
列出特定目录中的smali文件。参数:project_dir,smali_dir(默认:"smali"),package_prefix(可选过滤器)。 |
get_smali_file(project_dir, class_name) |
获取特定smali文件的内容。参数:project_dir,class_name(完全限定类名)。 |
modify_smali_file(project_dir, class_name, new_content, create_backup) |
修改smali文件内容。参数:project_dir,class_name,new_content,create_backup(默认:True)。 |
list_resources(project_dir, resource_type) |
列出项目中的资源。参数:project_dir,resource_type(可选,例如"layout","drawable")。 |
get_resource_file(project_dir, resource_type, resource_name) |
获取资源文件内容。参数:project_dir,resource_type,resource_name。 |
modify_resource_file(project_dir, resource_type, resource_name, new_content, create_backup) |
修改资源文件内容。参数:project_dir,resource_type,resource_name,new_content,create_backup(默认:True)。 |
search_in_files(project_dir, search_pattern, file_extensions, max_results) |
在项目文件中搜索。参数:project_dir,search_pattern,file_extensions(默认:[".smali", ".xml"]),max_results(默认:100)。 |
get_apktool_yml(project_dir) |
从解码后的项目中获取apktool.yml信息。参数:project_dir。 |
参数说明:
project_dir:APKTool项目目录的路径。apk_path:APK文件的路径。class_name:完全限定类名(例如"com.example.MyClass")。resource_type:资源目录名称(例如"layout","drawable","values")。create_backup:修改前是否创建备份(默认:True)。file_extensions:要搜索的文件扩展名列表(默认:[".smali", ".xml"])。
MobSF MCP
✨ 主要API功能:
| API | 描述 |
|---|---|
uploadFile(file) |
将移动应用程序文件(APK、IPA或APPX)上传到MobSF进行安全分析。 |
getScanLogs(hash) |
检索先前分析的移动应用程序的详细扫描日志。 |
getJsonReport(hash) |
生成并检索JSON格式的全面安全分析报告。 |
getJsonReportSection(hash, section) |
获取JSON报告的特定部分。 |
getJsonReportSections(hash) |
获取JSON报告中所有可用的部分名称。 |
getRecentScans(page, pageSize) |
检索最近执行的安全扫描列表。 |
searchScanResult(query) |
按哈希、应用程序名称、包名或文件名搜索扫描结果。 |
deleteScan(hash) |
删除特定分析的扫描结果。 |
getScorecard(hash) |
获取MobSF应用程序安全计分卡。 |
generatePdfReport(hash) |
生成PDF安全报告(返回Base64编码的PDF)。 |
viewSource(hash, file, type) |
查看分析应用程序的源文件。 |
getScanTasks() |
获取扫描任务队列(需要启用异步扫描队列)。 |
compareApps(hash1, hash2) |
比较两个应用程序的安全分析结果。 |
suppressByRule(hash, type, rule) |
按规则ID抑制发现的问题。 |
suppressByFiles(hash, type, rule) |
按文件抑制发现的问题。 |
listSuppressions(hash) |
查看扫描的所有抑制项。 |
deleteSuppression(hash, type, rule, kind) |
删除特定的抑制项。 |
listAllHashes(page, pageSize) |
获取所有报告的MD5哈希值。 |
📊 报告部分API:
MobSF提供了详细的特定部分API,用于访问分析报告的不同部分。每个部分可以使用getJsonSection_{section}(hash)进行访问:
| 部分类别 | 可用部分 |
|---|---|
| 基本信息 | version,title,file_name,app_name,app_type,size,md5,sha1,sha256 |
| 应用程序信息 | package_name,main_activity,version_name,version_code |
| 组件 | exported_activities,browsable_activities,activities,receivers,providers,services |
| SDK信息 | target_sdk,max_sdk,min_sdk,libraries |
| 安全分析 | permissions,malware_permissions,certificate_analysis,manifest_analysis,network_security,binary_analysis |
| 代码分析 | file_analysis,android_api,code_analysis,niap_analysis,permission_mapping |
| 内容分析 | urls,domains,emails,strings,firebase_urls,secrets |
| 附加信息 | exported_count,apkid,behaviour,trackers,playstore_details,sbom |
| 安全指标 | average_cvss,appsec,virus_total |
| 系统信息 | base_url,dwd_dir,host_os |
参数说明:
file:移动应用程序文件(APK、IPA或APPX)的路径。hash:分析应用程序的MD5哈希值。section:要检索的报告部分的名称。page:分页结果的页码。pageSize:每页的项目数。type:文件类型(apk/ipa/studio/eclipse/ios)。rule:抑制管理的规则ID。kind:抑制类型(规则/文件)。
FlowDroid MCP
✨ 主要API功能:
| API | 描述 |
|---|---|
run_flowdroid_analysis(apk_path, output_dir) |
对APK文件运行FlowDroid污点分析。参数:apk_path(APK文件路径),output_dir(可选输出目录)。 |
get_flowdroid_sources(analysis_dir) |
从FlowDroid分析结果中提取污点源。参数:analysis_dir(分析输出目录)。 |
get_flowdroid_sinks(analysis_dir) |
从FlowDroid分析结果中提取污点汇。参数:analysis_dir(分析输出目录)。 |
clean_flowdroid_workspace() |
清理FlowDroid工作区目录,为新的分析做准备。 |
参数说明:
apk_path:要分析的APK文件的路径。output_dir:可选输出目录(默认为workspace/apk_name)。analysis_dir:FlowDroid分析输出目录的路径。
多专家决策模型
本项目采用“多专家决策”模型对APK安全进行全面分析。该模型借鉴了多位专家独立判断和集体决策的思想,结合了5种主流逆向分析工具(JEB、JADX、APKTool、FlowDroid、MobSF)的MCP接口,大大提高了漏洞发现的全面性和结果的可信度。
分析过程概述
-
多位专家独立作答
- 5种逆向分析工具(MCP)对同一个APK独立进行静态分析,并自动生成各自的漏洞报告。
- 每个工具作为一个“专家”,从不同的视角和技术细节独立发现潜在的安全问题。
-
大模型频率统计与排序
- 使用大模型对所有工具输出的漏洞进行合并、去重和内容分析,统计每个漏洞在5个工具报告中的出现频率,并记录其来源。
- 按出现频率对所有漏洞进行排序。出现频率越高,可信度越高。
-
本地优先筛选与分流
- 自动保留前60%的高频漏洞(即在5个工具中出现频率较高、可信度较高的漏洞)在本地。
- 将后40%的漏洞分为两类:
- 无MobSF来源:即仅由其他逆向工具发现的漏洞,全部保留。
- 有MobSF来源:即仅出现在MobSF报告中的低频漏洞,交给大模型进一步评估其危险性,仅保留高风险漏洞。
-
最终综合整合 将第三步中本地保留的所有高优先级漏洞、独特漏洞以及大模型评估为高风险的MobSF漏洞进行整合,生成最终的综合漏洞分析报告。
CrossValidation_APKAnalysis MCP
✨ 主要API功能:
| API | 描述 |
|---|---|
analyze_with_jeb/jadx/apktool/flowdroid/mobsf(apk_path) |
使用JEB/JADX/APKTool/FlowDroid/MobSF MCP工具独立分析APK并生成标准化的漏洞报告。参数:apk_path(APK文件路径)。 |
combine_analysis_results(report_paths) |
合并所有5个工具的报告,统计每个漏洞的频率和来源,并按组件权重排序,生成初步的综合报告。参数:report_paths(报告文件路径列表)。 |
split_vulnerabilities_by_priority(combined_report_path) |
根据频率将漏洞分为三类:高优先级(前60%)、无MobSF来源的低优先级、仅含MobSF来源的低优先级,并分别保存。参数:combined_report_path(合并报告的路径)。 |
assess_vulnerability_risk(mobsf_low_priority_path) |
对于仅来自MobSF的低优先级漏洞,调用大模型进行风险评估,仅保留高风险漏洞。参数:mobsf_low_priority_path(仅含MobSF的低优先级漏洞的路径)。 |
integrate_priority_reports(high_priority_path, unique_low_priority_path, high_risk_mobsf_path) |
整合高优先级、独特低优先级和高风险的MobSF漏洞,生成最终的综合分析报告。参数:high_priority_path,unique_low_priority_path,high_risk_mobsf_path(每个报告的路径)。 |
参数说明:
apk_path:要分析的APK文件的绝对路径。report_paths:每个工具的标准化报告文件路径列表。combined_report_path:合并后的初步综合报告的路径。mobsf_low_priority_path:仅来自MobSF的低优先级漏洞的路径。high_priority_path,unique_low_priority_path,high_risk_mobsf_path:不同优先级漏洞报告的路径。
VSCode Cline扩展配置
要在VSCode中使用cline扩展来使用此项目,请在你的cline配置文件中添加以下配置:
{
"mcpServers": {
"apk_analysis": {
"disabled": false,
"timeout": 60,
"command": "myenv\\Scripts\\python.exe",
"args": [
"CrossValidation_APKAnalysis.py"
],
"transportType": "stdio"
}
}
}
通过以上过程,项目实现了多工具、多视角的漏洞发现和自动化决策,大大提高了分析结果的全面性、准确性和实用价值。
🔧 技术细节
本项目使用“多专家决策”模型,结合5种主流逆向分析工具(JEB、JADX、APKTool、FlowDroid、MobSF)的MCP接口,对APK安全进行全面分析。具体技术细节如下:
- 多位专家独立作答:5种逆向分析工具(MCP)对同一个APK独立进行静态分析,并自动生成各自的漏洞报告。每个工具作为一个“专家”,从不同的视角和技术细节独立发现潜在的安全问题。
- 大模型频率统计与排序:使用大模型对所有工具输出的漏洞进行合并、去重和内容分析,统计每个漏洞在5个工具报告中的出现频率,并记录其来源。按出现频率对所有漏洞进行排序,出现频率越高,可信度越高。
- 本地优先筛选与分流:自动保留前60%的高频漏洞在本地,将后40%的漏洞分为两类:无MobSF来源的漏洞全部保留,有MobSF来源的漏洞交给大模型进一步评估其危险性,仅保留高风险漏洞。
- 最终综合整合:将本地保留的所有高优先级漏洞、独特漏洞以及大模型评估为高风险的MobSF漏洞进行整合,生成最终的综合漏洞分析报告。
📄 许可证
本项目采用Apache License 2.0许可协议 - 详情请参阅LICENSE文件。
🙏 致谢
本项目基于并集成了多个优秀的开源工具和项目。
特别感谢:
- 所有集成工具的开发者和维护者
- 开源社区的持续贡献
- 所有帮助改进本项目的贡献者
⚠️ 免责声明和法律声明
本工具套件仅设计用于安全研究人员、渗透测试人员和开发者进行合法的安全测试和分析。用户必须:
- 仅分析自己拥有或获得明确测试许可的应用程序。
- 遵守所有适用的法律法规。
- 尊重知识产权和服务条款。
- 负责任且合乎道德地使用这些工具。
用户必须确保其使用本工具符合:
- 本地和国际法律
- 软件许可协议
- 被分析应用程序的服务条款
- 数据保护和隐私法规
🤝 贡献
我们热烈欢迎社区的贡献!无论你是修复漏洞、改进文档、添加新功能还是提出改进建议,我们都非常感谢你的帮助。
- 🐛 报告漏洞和问题
- 💡 提出新功能或改进建议
- 📝 改进文档
- 🔍 审查代码和拉取请求
- 💻 提交拉取请求
我们致力于共同使这个项目变得更好。你的贡献将使这个工具对整个安全研究社区更加强大和有用。
替代品








