# hardening-studio **Repository Path**: wasadsdfa/hardening-studio ## Basic Information - **Project Name**: hardening-studio - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-02 - **Last Updated**: 2026-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Hardening Studio (MVP) 离线 Android APK/AAB 加固桌面应用(Tauri + React)。 ## 当前已实现 - 工业风控制台 UI(策略开关、任务面板、日志区、工具链状态区) - 本地工具链检测(Rust/Tauri/Bundletool/NDK/SDK 等) - APK/AAB 文件分析(类型、大小、SHA-256) - ADB 设备基准采集(冷启动/内存) - 默认 30 次冷启动,去前 3 次后取均值 - 可输入基线值并自动计算增幅百分比 - 可一键回填到加固门禁字段 - 支持刷新设备列表与读取已安装包名(支持关键字过滤) - 支持自动解析启动 Activity(Launcher 入口) - 支持“一键闭环”:采集 -> 回填 -> 加固 -> 报告输出 - 加固任务流水线(解包 -> 注入策略/白名单/完整性元数据 -> 重打包) - APK 运行时注入(Provider + RuntimeGuard smali) - 支持分级响应:高危退出 / 中危降级标记 / 低危仅记录 - 支持本地白名单匹配(`package + version + rule_id`) - AAB 加固(保持 `AAB -> AAB`) - 优先尝试 runtime 注入(manifest proto + dex) - 失败自动回落为 metadata-only,并在审计报告披露降级原因 - 自动输出双报告:JSON 审计 + PDF 审计 - 本地任务历史(加固/签名/采集,含失败记录)可回看 - 支持从历史任务一键回填关键参数 - 历史内置脱敏参数快照,回填可恢复更多配置项 - 白名单规则写入为紧凑 JSON,运行时匹配稳定(不受空白字符影响) - 提供产物验证(自动验证 + 手工验证)确保关键加固标记存在 - 提供独立验签能力(APK/AAB),可对任意产物单独执行签名有效性检查 - 失败任务返回统一错误码(如 `E_VERIFY_FAILED`、`E_GATE_FAILED`),并在历史中留痕 - 手工验证结果支持失败项聚合展示,便于快速定位缺失校验项 - 加固门禁: - 包体增幅 `<= 5%`(强制) - 冷启动增幅 `<= 5%`(可选输入) - 内存增幅 `<= 8%`(可选输入) - 兼容通过率 `>= 99%`(可选输入) - 独立签名入口 - APK: `apksigner` - AAB: `jarsigner` - 签名后自动执行验签,失败则任务报错并给出错误码 - 生成独立签名审计:JSON + PDF ## 启动方式 ```bash cd hardening-studio source ~/.zshrc npm install npm run tauri:dev ``` ## 构建 ```bash cd hardening-studio source ~/.zshrc npm run tauri:build ``` 仅构建 `.app`: ```bash npm run tauri:build:app ``` 稳定生成 `.dmg`(推荐): ```bash npm run tauri:build:dmg ``` 面向其他 Mac 分发的“可安装版本”(签名 + 公证 + staple): ```bash npm run tauri:build:dmg:release ``` 发布打包前请准备以下内容(至少一种公证方式): - Developer ID 证书(`Developer ID Application`)已导入钥匙串 - 公证凭据(二选一): - `APPLE_NOTARY_PROFILE`(建议,keychain profile) - `APPLE_ID` + `APPLE_TEAM_ID` + `APPLE_APP_SPECIFIC_PASSWORD` 说明:当前打包策略仅面向 M 系列芯片(`arm64`)。 默认输出路径: - `.app`:`src-tauri/target/release/bundle/macos/Hardening Studio.app` - `.dmg`:`src-tauri/target/release/bundle/dmg/Hardening Studio__.dmg` ## 回归脚本(加固 + 签名 + 验证 + 验签) macOS / Linux: ```bash cd hardening-studio scripts/e2e_smoke.sh /绝对路径/your-app.apk ``` Windows PowerShell: ```powershell cd hardening-studio powershell -ExecutionPolicy Bypass -File .\scripts\e2e_smoke.ps1 -ArtifactPath "D:\path\your-app.apk" ``` 可选环境变量: - `KEYSTORE_PATH`:自定义 keystore 路径 - `KEY_ALIAS`:签名别名(默认 `smokealias`) - `STORE_PASS`:keystore 密码(默认 `hardening123`) - `KEY_PASS`:key 密码(默认 `hardening123`) 说明: - 脚本会先把输入 APK/AAB 复制到 `smoke_samples/` 再执行,避免原目录写权限问题。 ## 发布前检查清单 1. 环境检查 - 执行“环境检测”,确认 `apktool`、`jar`、`apksigner`、`jarsigner`、`adb`(如需基准采集)可用。 - 确认本机离线可运行,不依赖任何云端服务。 2. 输入与范围检查 - 输入必须是已编译 `APK` 或 `AAB`,并使用绝对路径。 - Android 目标范围按 `6.0 ~ 16` 执行验证。 3. 加固策略检查 - 明确是否启用:签名校验、防篡改、Frida/Xposed/Root/调试器/模拟器/重打包检测。 - 如有误报治理需求,先配置白名单 JSON(`package + version + rule_id`)。 4. 门禁检查 - 包体增幅必须 `<= 5%`(强制)。 - 冷启动增幅建议 `<= 5%`(有基线时填写并校验)。 - 内存增幅建议 `<= 8%`(有基线时填写并校验)。 - 兼容通过率目标 `>= 99%`(建议填写并校验)。 5. 产物验证检查 - 加固后执行“验证产物”,确认关键校验项通过(policy/integrity/whitelist/manifest/dex)。 - 若失败,先看错误码与失败校验项,再决定是否调整策略或白名单。 6. 签名与验签检查 - 使用“独立签名”完成最终签名产物生成。 - 必须确认“签名后验签”为通过;必要时再执行“独立验签”二次确认。 7. 报告归档检查 - 归档加固报告:JSON + PDF。 - 归档签名报告:JSON + PDF。 - 保留任务时间戳、输入输出路径、工具版本、策略摘要,便于审计追溯。 8. 上架前最终检查 - 再次确认上传的是“已签名最终产物”而非待签名包。 - 执行一次安装/启动冒烟测试,确认基础功能可用。 - 提交 Google Play 前,核对包名、版本号、签名证书与发布轨道配置。 ## 注意事项 - APK 路径固定注入运行时检测逻辑;AAB 路径采用 best-effort runtime 注入,失败会自动回落 metadata-only。 - 加固输出命名默认追加 `_jiagu`(如 `app_release_jiagu.apk`)。 - 签名输出命名默认追加 `_sign`(如 `app_release_jiagu_sign.apk`)。 - 签名会调用系统本地工具链,需保证 `apksigner` / `jarsigner` 可执行。 - 归档重打包会调用 JDK `jar` 工具,需保证 `jar` 可执行。 - 推荐输入绝对路径,避免工作目录差异导致找不到文件。 - 白名单 JSON 示例: ```json { "rules": [ { "package": "com.demo.app", "version": "*", "rule_id": "rasp_emulator" } ] } ```