Back to MCP directory
publicPublicdnsLocal runtime

apk-security-guard-mcp-suite

Android APK安全分析自动化套件,集成JEB、JADX、APKTOOL、FlowDroid、MobSF等工具,通过MCP协议提供统一API接口,实现多工具交叉验证的漏洞检测

article

README

🚀 APK安全防护MCP套件

本项目旨在为安卓APK安全分析与漏洞检测提供一站式自动化解决方案。通过集成JEB、JADX、APKTOOL、FlowDroid、MobSF等主流反编译、静态分析、动态分析工具,并将其统一为MCP(模型上下文协议)标准API接口,极大提升了安全分析的自动化程度与效率。适用于对APK安全有需求的安全研究人员、渗透测试人员、开发者等用户。

🚀 快速开始

环境依赖

本项目需要使用Python 3.11及以上版本,同时需要安装Node.js。

安装步骤

为避免全局环境中的依赖冲突,强烈建议使用Python虚拟环境来管理项目依赖。以下是详细的安装步骤:

  1. 创建新的虚拟环境:
# 对于Windows系统
python -m venv myenv
myenv\Scripts\activate

# 对于Linux/MacOS系统
python -m venv myenv
source myenv/bin/activate
  1. 确认虚拟环境已激活(命令提示符中应显示(myenv))后,安装项目依赖:
pip install -r requirements.txt
  1. 若需要使用MobSF相关API,需单独安装Node.js依赖,进入MobSF-MCP目录:
npm install -g mobsf-mcp

⚠️ 重要提示

  • 建议使用Python 3.11版本。
  • 每次开始新的工作会话时,记得激活虚拟环境。

插件或脚本安装建议

JEB MCP脚本

该脚本需要预先放置在JEB工具的脚本文件夹中。

  1. 打开JEB,导航至文件 > 脚本 > 脚本选择器
  2. 从脚本列表中选择并运行MCP.py
  3. 若脚本成功加载并运行,你应该会在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。

  1. 运行以下命令安装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'))
  1. Chocolatey安装完成后,使用以下命令安装APKTool:
choco install apktool

安装完成后,你可以直接从命令行使用apktool。更多详细信息和高级用法,请参考APKTool官方文档

MobSF MCP

首先确保已安装MobSF

如果你希望扩展功能并添加新的API,在项目的MobSF-MCP根目录下运行以下命令:

npm run build

构建完成后,你会在build文件夹中找到生成的index.jsmobsf.js文件。

以管理员身份打开PowerShell。

  • 在命令行中设置所需的环境变量:
$env:MOBSF_URL="http://localhost:8000"; 
$env:MOBSF_API_KEY="your_api_key_here"; 
  • 使用以下命令启动MobSF MCP服务器:
npx mobsf-mcp

FlowDroid

要设置FlowDroid以与此套件一起使用,请按以下步骤操作:

  1. 官方发布页面下载FlowDroid的soot-infoflow-cmd-2.13.0-jar-with-dependencies.jar命令行JAR文件。
  2. 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虚拟环境来管理项目依赖。以下是详细的安装步骤:

  1. 创建新的虚拟环境:
# 对于Windows系统
python -m venv myenv
myenv\Scripts\activate

# 对于Linux/MacOS系统
python -m venv myenv
source myenv/bin/activate
  1. 确认虚拟环境已激活(命令提示符中应显示(myenv))后,安装项目依赖:
pip install -r requirements.txt
  1. 若需要使用MobSF相关API,需单独安装Node.js依赖,进入MobSF-MCP目录:
npm install -g mobsf-mcp

插件或脚本安装

JEB MCP脚本

该脚本需要预先放置在JEB工具的脚本文件夹中。

  1. 打开JEB,导航至文件 > 脚本 > 脚本选择器
  2. 从脚本列表中选择并运行MCP.py
  3. 若脚本成功加载并运行,你应该会在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。

  1. 运行以下命令安装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'))
  1. Chocolatey安装完成后,使用以下命令安装APKTool:
choco install apktool

安装完成后,你可以直接从命令行使用apktool。更多详细信息和高级用法,请参考APKTool官方文档

MobSF MCP

首先确保已安装MobSF

如果你希望扩展功能并添加新的API,在项目的MobSF-MCP根目录下运行以下命令:

npm run build

构建完成后,你会在build文件夹中找到生成的index.jsmobsf.js文件。

以管理员身份打开PowerShell。

  • 在命令行中设置所需的环境变量:
$env:MOBSF_URL="http://localhost:8000"; 
$env:MOBSF_API_KEY="your_api_key_here"; 
  • 使用以下命令启动MobSF MCP服务器:
npx mobsf-mcp

FlowDroid

要设置FlowDroid以与此套件一起使用,请按以下步骤操作:

  1. 官方发布页面下载FlowDroid的soot-infoflow-cmd-2.13.0-jar-with-dependencies.jar命令行JAR文件。
  2. 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_signatureclass_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是反编译代码中显示的方法名。
  • limitoffset用于列出类时的分页。
  • 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_dirsource_dirs(源目录列表)。 | | list_smali_directories(project_dir) | 列出项目中的所有smali目录。参数:project_dir。 | | list_smali_files(project_dir, smali_dir, package_prefix) | 列出特定目录中的smali文件。参数:project_dirsmali_dir(默认:"smali"),package_prefix(可选过滤器)。 | | get_smali_file(project_dir, class_name) | 获取特定smali文件的内容。参数:project_dirclass_name(完全限定类名)。 | | modify_smali_file(project_dir, class_name, new_content, create_backup) | 修改smali文件内容。参数:project_dirclass_namenew_contentcreate_backup(默认:True)。 | | list_resources(project_dir, resource_type) | 列出项目中的资源。参数:project_dirresource_type(可选,例如"layout","drawable")。 | | get_resource_file(project_dir, resource_type, resource_name) | 获取资源文件内容。参数:project_dirresource_typeresource_name。 | | modify_resource_file(project_dir, resource_type, resource_name, new_content, create_backup) | 修改资源文件内容。参数:project_dirresource_typeresource_namenew_contentcreate_backup(默认:True)。 | | search_in_files(project_dir, search_pattern, file_extensions, max_results) | 在项目文件中搜索。参数:project_dirsearch_patternfile_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)进行访问: | 部分类别 | 可用部分 | |-----------------|-------------------| | 基本信息 | versiontitlefile_nameapp_nameapp_typesizemd5sha1sha256 | | 应用程序信息 | package_namemain_activityversion_nameversion_code | | 组件 | exported_activitiesbrowsable_activitiesactivitiesreceiversprovidersservices | | SDK信息 | target_sdkmax_sdkmin_sdklibraries | | 安全分析 | permissionsmalware_permissionscertificate_analysismanifest_analysisnetwork_securitybinary_analysis | | 代码分析 | file_analysisandroid_apicode_analysisniap_analysispermission_mapping | | 内容分析 | urlsdomainsemailsstringsfirebase_urlssecrets | | 附加信息 | exported_countapkidbehaviourtrackersplaystore_detailssbom | | 安全指标 | average_cvssappsecvirus_total | | 系统信息 | base_urldwd_dirhost_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接口,大大提高了漏洞发现的全面性和结果的可信度。

分析过程概述

  1. 多位专家独立作答

    • 5种逆向分析工具(MCP)对同一个APK独立进行静态分析,并自动生成各自的漏洞报告。
    • 每个工具作为一个“专家”,从不同的视角和技术细节独立发现潜在的安全问题。
  2. 大模型频率统计与排序

    • 使用大模型对所有工具输出的漏洞进行合并、去重和内容分析,统计每个漏洞在5个工具报告中的出现频率,并记录其来源。
    • 按出现频率对所有漏洞进行排序。出现频率越高,可信度越高。
  3. 本地优先筛选与分流

    • 自动保留前60%的高频漏洞(即在5个工具中出现频率较高、可信度较高的漏洞)在本地。
    • 将后40%的漏洞分为两类:
      • 无MobSF来源:即仅由其他逆向工具发现的漏洞,全部保留。
      • 有MobSF来源:即仅出现在MobSF报告中的低频漏洞,交给大模型进一步评估其危险性,仅保留高风险漏洞。
  4. 最终综合整合 将第三步中本地保留的所有高优先级漏洞、独特漏洞以及大模型评估为高风险的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_pathunique_low_priority_pathhigh_risk_mobsf_path(每个报告的路径)。 |

参数说明:

  • apk_path:要分析的APK文件的绝对路径。
  • report_paths:每个工具的标准化报告文件路径列表。
  • combined_report_path:合并后的初步综合报告的路径。
  • mobsf_low_priority_path:仅来自MobSF的低优先级漏洞的路径。
  • high_priority_pathunique_low_priority_pathhigh_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安全进行全面分析。具体技术细节如下:

  1. 多位专家独立作答:5种逆向分析工具(MCP)对同一个APK独立进行静态分析,并自动生成各自的漏洞报告。每个工具作为一个“专家”,从不同的视角和技术细节独立发现潜在的安全问题。
  2. 大模型频率统计与排序:使用大模型对所有工具输出的漏洞进行合并、去重和内容分析,统计每个漏洞在5个工具报告中的出现频率,并记录其来源。按出现频率对所有漏洞进行排序,出现频率越高,可信度越高。
  3. 本地优先筛选与分流:自动保留前60%的高频漏洞在本地,将后40%的漏洞分为两类:无MobSF来源的漏洞全部保留,有MobSF来源的漏洞交给大模型进一步评估其危险性,仅保留高风险漏洞。
  4. 最终综合整合:将本地保留的所有高优先级漏洞、独特漏洞以及大模型评估为高风险的MobSF漏洞进行整合,生成最终的综合漏洞分析报告。

📄 许可证

本项目采用Apache License 2.0许可协议 - 详情请参阅LICENSE文件。

🙏 致谢

本项目基于并集成了多个优秀的开源工具和项目。

特别感谢:

  • 所有集成工具的开发者和维护者
  • 开源社区的持续贡献
  • 所有帮助改进本项目的贡献者

⚠️ 免责声明和法律声明

本工具套件仅设计用于安全研究人员、渗透测试人员和开发者进行合法的安全测试和分析。用户必须:

  1. 仅分析自己拥有或获得明确测试许可的应用程序。
  2. 遵守所有适用的法律法规。
  3. 尊重知识产权和服务条款。
  4. 负责任且合乎道德地使用这些工具。

用户必须确保其使用本工具符合:

  • 本地和国际法律
  • 软件许可协议
  • 被分析应用程序的服务条款
  • 数据保护和隐私法规

🤝 贡献

我们热烈欢迎社区的贡献!无论你是修复漏洞、改进文档、添加新功能还是提出改进建议,我们都非常感谢你的帮助。

  • 🐛 报告漏洞和问题
  • 💡 提出新功能或改进建议
  • 📝 改进文档
  • 🔍 审查代码和拉取请求
  • 💻 提交拉取请求

我们致力于共同使这个项目变得更好。你的贡献将使这个工具对整个安全研究社区更加强大和有用。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client