8times4/smartglance-reverse-patch

GitHub: 8times4/smartglance-reverse-patch

这是一个通过逆向工程移除 SmartGlance 安卓应用厂商网络行为和后台传感器高频轮询的实验性离线 patch 脚本,旨在保护用户隐私并降低设备功耗。

Stars: 0 | Forks: 0

# SmartGlance 逆向 patch 用于 SmartGlance APK 的实验性 patch 脚本。 该脚本已在 SmartGlance `1.0.8` 上进行了测试。其他 SmartGlance 版本可能也可行,但混淆后的类名可能会在不同版本之间发生变化。在使用前,请重新验证每个打过 patch 的 APK。 已审查的示例 APK: ``` https://smart1.qinghui365.com/SmartGlance-v1.0.8-release.apk ``` 在 repo 中: ``` SmartGlance-v1.0.8-release.apk ``` - 原始 APK SHA256:`447cb67f3c813118500df96cb8c6e8146aaec350074862d4c381a3a5250053b5` ## 为什么? 一位亲戚在 aliexpress 买了一个便宜的智能保护壳,我想确保他们能安全地使用它,而不会导致其数据被卖给任何人,或者该应用在暗中执行任何可疑操作。 ## 修改内容 - 移除了 `INTERNET`。 - 移除了 `ACCESS_NETWORK_STATE`。 - 移除了 `REQUEST_INSTALL_PACKAGES`。 - 移除了 `HIGH_SAMPLING_RATE_SENSORS`。 - 设置了 `allowBackup=false`。 - 设置了 `usesCleartextTraffic=false`。 - 在 `versionName` 后附加了 `-offline`。 - 将应用名称重命名为 `SmartGlance Offline`。 - 将更新 UI 的字符串修改为离线版本的字符串。 - 使更新检查和更新下载的 coroutine 立即返回。 - 将厂商更新 base URL 替换为 `http://127.0.0.1/` 作为兜底。 - 将磁力传感器的轮询频率从最快速率降低到了 UI 速率。 - 默认禁用了静默循环 `MediaPlayer` 的 keepalive。 可选的 `--keep-media-keepalive` 标志会保留原有的静默 media keepalive。如果默认版本在手机闲置后停止响应,请使用该版本。 ## 从 GitHub 安装 使用 GitHub Releases 下载公开的 APK。APK 二进制文件应放在 release assets 中,而不是 repo 历史记录中。 推荐的 APK: [SmartGlance-v1.0.8-release-offline-patched.apk](https://github.com/8times4/smartglance-reverse-patch/releases/download/v1.0.8-offline/SmartGlance-v1.0.8-release-offline-patched.apk) 备用 APK,仅适用于推荐版本在后台停止响应的手机: [SmartGlance-v1.0.8-release-offline-media-keepalive.apk](https://github.com/8times4/smartglance-reverse-patch/releases/download/v1.0.8-offline/SmartGlance-v1.0.8-release-offline-media-keepalive.apk) Release 页面: https://github.com/8times4/smartglance-reverse-patch/releases/tag/v1.0.8-offline 手机安装步骤: 1. 在手机上打开最新的 GitHub release。 2. 下载上面推荐的 APK。 3. 卸载厂商的 SmartGlance 应用(如果已安装)。 4. 打开下载的 APK。 5. 如果 Android 提示,请允许“安装未知应用”。 6. 安装并打开 `SmartGlance Offline`。 维护者发布检查清单: ``` smartglance-reverse-patch/patch_smartglance_offline.sh \ smartglance-reverse-patch/SmartGlance-v1.0.8-release.apk smartglance-reverse-patch/patch_smartglance_offline.sh --keep-media-keepalive \ smartglance-reverse-patch/SmartGlance-v1.0.8-release.apk \ smartglance-reverse-patch/dist/SmartGlance-v1.0.8-release-offline-media-keepalive.apk shasum -a 256 smartglance-reverse-patch/dist/*.apk ``` 将 `dist/` 中的两个 APK 附加到 GitHub release 中。将 SHA256 值写入 release notes 中。 ## 环境要求 - `apktool` - 带有 `zipalign` 和 `apksigner` 的 Android SDK build-tools - `keytool` 在 macOS 上: ``` brew install apktool export ANDROID_HOME="$HOME/Library/Android/sdk" ``` ## 构建 默认离线版本: ``` smartglance-reverse-patch/patch_smartglance_offline.sh \ smartglance-reverse-patch/SmartGlance-v1.0.8-release.apk ``` 输出: ``` smartglance-reverse-patch/dist/-offline-patched.apk ``` 保留静默 media keepalive: ``` smartglance-reverse-patch/patch_smartglance_offline.sh --keep-media-keepalive \ smartglance-reverse-patch/SmartGlance-v1.0.8-release.apk \ smartglance-reverse-patch/dist/SmartGlance-v1.0.8-release-offline-media-keepalive.apk ``` 脚本使用此本地 debug key 进行签名: ``` ~/.android/smartglance-offline-debug.keystore ``` Android 会将打过 patch 的 APK 视为与厂商 APK 不同的签名者。在安装打过 patch 的版本之前,请先卸载由厂商签名的应用。 ## 使用 adb 安装 ``` adb uninstall vip.wexiang.SmartGlance adb install smartglance-reverse-patch/dist/SmartGlance-v1.0.8-release-offline-patched.apk ``` ## 验证 检查已移除的权限: ``` BUILD_TOOLS=$(find "${ANDROID_HOME:-$HOME/Library/Android/sdk}/build-tools" -mindepth 1 -maxdepth 1 -type d | sort | tail -n 1) "$BUILD_TOOLS/aapt2" dump permissions \ smartglance-reverse-patch/dist/SmartGlance-v1.0.8-release-offline-patched.apk ``` 预期缺失的权限: ``` android.permission.INTERNET android.permission.ACCESS_NETWORK_STATE android.permission.REQUEST_INSTALL_PACKAGES android.permission.HIGH_SAMPLING_RATE_SENSORS ``` 检查启动: ``` adb logcat -c adb shell monkey -p vip.wexiang.SmartGlance -c android.intent.category.LAUNCHER 1 sleep 5 adb shell pidof vip.wexiang.SmartGlance adb logcat -d | grep -Ei 'FATAL EXCEPTION|missing INTERNET|product\.expcover' ``` 预期结果:`pidof` 会打印一个进程 ID,而 grep 什么都不打印。 ## NFC 测试 Android 模拟器不足以测试 NFC 流程。该应用使用 `NfcAdapter.enableReaderMode`,并期望真实的 `NfcA` tag 或保护壳。 ``` adb logcat -c adb shell am start -n vip.wexiang.SmartGlance/vip.wexiang.ui.MainActivity adb logcat | grep -Ei 'vip.wexiang|enableReaderMode|NFC|读取|校验|设备|数据|activated' ``` 正常表现: ``` enableReaderMode 读取数据 校验设备,匹配 ``` 异常表现: ``` 密码不匹配 数据不合法 设备不匹配 ``` 硬件 NFC 模拟需要 Proxmark3、Chameleon、PN532 或类似设备,并将其配置为带有密码认证的兼容 `NfcA` 或 Type-2 tag。使用真实的保护壳更简单。 ## 研究笔记 静态、动态、MobSF、Ghidra RPC、NFC 和 patch 相关笔记位于: ``` smartglance-reverse-patch/research/ ```
标签:Android, APK补丁, Cutter, DSL, 云资产清单, 权限控制, 网络安全, 逆向工程, 隐私保护