Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

纯前端网页应用,用于分析 Android APK 文件中集成的 SDK 库和 AndroidManifest.xml 内容。

Notifications You must be signed in to change notification settings

ShellMonster/JavaScript_Apk_Analysis

Repository files navigation

APK SDK 分析工具

项目简介

这是一个纯前端网页应用,用于分析 Android APK 文件中集成的 SDK 库和 AndroidManifest.xml 内容。

核心功能

  • ✅ 从 APK 中提取并解析 AndroidManifest.xml 文件
  • ✅ 识别集成的 SDK 和原生库(基于 LibChecker 规则库,2884+ 库规则)
  • ✅ 按分类展示 SDK 库(崩溃收集、网络请求、支付、广告等)
  • ✅ 完整展示 AndroidManifest.xml 内容(支持复制和下载)
  • ✅ 生成专业分析报告(HTML / JSON)

界面预览

APK 分析工具界面

技术栈

  • 前端框架: React 18 + TypeScript
  • 构建工具: Vite
  • APK 解析: jszip
  • AXML 解析: 自实现(基于 axml2xml)
  • 多线程: Web Worker
  • 缓存: IndexedDB

项目结构

apk-analyzer/
├── package.json # 项目配置
├── tsconfig.json # TypeScript 配置
├── vite.config.ts # Vite 配置
├── index.html # 入口 HTML
├── sdk-categories.json # SDK 分类映射
├── scripts/
│ └── build-rules-bundle.js # 规则库预处理脚本(合并 2884+ JSON)
├── public/
│ └── rules-bundle.json # 预处理后的规则库(自动生成)
└── src/
 ├── main.tsx # 应用入口
 ├── App.tsx # 主应用组件
 ├── types/
 │ └── index.ts # TypeScript 类型定义
 ├── utils/
 │ ├── axmlParser.ts # AXML 解析工具(已完成)
 │ ├── fuzzyMatcher.ts # 模糊匹配算法
 │ └── reportGenerator.ts # 报告生成器
 ├── services/
 │ ├── apkAnalyzer.ts # APK 分析主逻辑
 │ ├── sdkScanner.ts # SDK 扫描模块
 │ └── rulesLoader.ts # 规则库加载管理
 ├── workers/
 │ └── analyzerWorker.ts # 分析 Worker(后台处理)
 ├── components/
 │ ├── FileUploader.tsx # 文件上传组件
 │ ├── AnalysisProgress.tsx # 进度展示组件
 │ ├── ResultTabs.tsx # 结果 Tab 容器
 │ ├── LibraryList.tsx # SDK 库列表
 │ ├── XmlViewer.tsx # XML 内容展示
 │ ├── AnalysisHistory.tsx # 历史记录页面
 │ ├── ReportExport.tsx # 报告导出对话框
 │ └── Toast.tsx # Toast 通知组件
 └── styles/
 └── App.css # 全局样式

开发指南

安装依赖

pnpm install

启动开发服务器

pnpm dev

服务器将在 http://localhost:3000 启动。

构建生产版本

pnpm build

构建产物将输出到 dist/ 目录。

规则库预处理

规则库预处理脚本会在 pnpm devpnpm build 前自动执行,将 2884+ 个规则文件合并为一个 public/rules-bundle.json 文件。

手动执行:

node scripts/build-rules-bundle.js

核心模块说明

1. AXML 解析器 (axmlParser.ts)

  • 将 Android 二进制 XML 转换为普通 XML
  • 提取 Manifest 基本信息(包名、版本号等)
  • 提取组件列表(Activity、Service、Provider、Receiver)

2. 模糊匹配算法 (fuzzyMatcher.ts)

采用 7 层级匹配策略:

  1. 精确匹配: 直接匹配规则库键名
  2. 基础规范化: 去除 lib 前缀、.so 扩展名、转小写
  3. 去除版本号: 移除 -5.9.7_v2.0 等版本号
  4. 去除构建后缀: 移除 -debug-release_arm64
  5. 去除包名前缀: 移除 com_example_app_ 等包名模式
  6. 子串模糊匹配: 在规则库中查找包含关系
  7. Hash 名称处理: 检测并标记混淆名称

3. SDK 扫描器 (sdkScanner.ts)

  • 扫描 Native 库(lib 目录下的 .so 文件)
  • 扫描 Manifest 组件(Activities/Services/Providers/Receivers)
  • 按架构分组(arm64-v8a, armeabi-v7a 等)
  • 去重处理

4. 规则库管理 (rulesLoader.ts)

  • 从 IndexedDB 加载规则库
  • 支持云端版本检查和自动更新
  • 规则库缓存优化

项目状态

✅ 已完成的功能

核心功能

  • ✅ 项目目录结构初始化
  • ✅ 规则库预处理脚本(合并 2358 个 JSON 文件,1.75 MB)
  • ✅ AXML 解析模块(完整实现,支持 ArrayBuffer)
  • ✅ TypeScript 完整类型定义
  • ✅ 7 层级模糊匹配算法实现
  • ✅ SDK 扫描和匹配模块(Native、Activity、Service、Provider、Receiver)
  • ✅ 规则库加载管理(IndexedDB 缓存 + 云端更新)
  • ✅ APK 分析主逻辑(完整流程编排)
  • ✅ 报告导出功能(HTML/JSON 双格式)

UI 组件

  • ✅ 文件上传组件(拖拽 + 点击上传,500MB 限制)
  • ✅ 分析进度组件(阶段跟踪 + 进度条)
  • ✅ 结果 Tab 容器(基本信息 + 统计卡片)
  • ✅ SDK 库列表(分类导航 + 展开/折叠)
  • ✅ XML 查看器(复制 + 下载)
  • ✅ 报告导出对话框(自定义选项)
  • ✅ 历史记录页面(日期分组 + 搜索 + 排序)
  • ✅ 最近分析列表(localStorage 持久化 + 快速重新分析)
  • ✅ Toast 通知组件(成功/错误提示)
  • ✅ 删除确认弹窗(防误操作)
  • ✅ 文件验证错误提示(内联显示,替代 alert)
  • ✅ 主应用组件(状态管理 + 错误处理)
  • ✅ 完整 CSS 样式(响应式设计 + 动画 + 优化对比度)

开发环境

  • ✅ Vite + React + TypeScript 配置完成
  • ✅ 依赖安装完成
  • ✅ 开发服务器正常运行(http://localhost:3000)
  • ✅ 规则库合并成功(2358 个规则)

🚀 可以立即使用

项目已经完全开发完成,可以直接使用!

# 启动开发服务器
pnpm dev
# 构建生产版本
pnpm build

访问 http://localhost:3000,上传 APK 文件即可开始分析。

📊 规则库统计

规则库版本: 2025年11月10日-1724
总规则数: 2358 个
文件大小: 1.75 MB
规则分布:
- Native 库: 1269 个规则
- Activity: 454 个规则
- Service: 259 个规则
- Provider: 147 个规则
- Receiver: 117 个规则
- Static: 1 个规则
- Actions: 111 个规则

注意事项

  1. 规则库路径: 确保 ../LibChecker-Rules-4/ 目录存在并包含规则文件
  2. 分类映射: sdk-categories.json 文件必须存在于项目根目录
  3. 内存优化: 使用 Web Worker 处理大文件,避免阻塞 UI
  4. 离线支持: 规则库通过 IndexedDB 缓存,支持离线使用

许可证

MIT

About

纯前端网页应用,用于分析 Android APK 文件中集成的 SDK 库和 AndroidManifest.xml 内容。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /