Apk Security Guard Mcp Suite

Apk Security Guard Mcp Suite

🚀 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 /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 /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. 负责任且合乎道德地使用这些工具。

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

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

🤝 贡献

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

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

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

  • 0 关注
  • 0 收藏,21 浏览
  • system 提出于 2025-09-29 21:06

相似服务问题

相关AI产品