应用宝能否被改造为锁机软件 —— 可行性评估

⚠️ 本文由 AI 生成,内容仅供学习参考,可能存在不准确之处,请以官方信息为准。

基于 com.tencent.android.qqdownloader(应用宝 9.2.7,官方渠道)jadx 反编译源码与 apktool 输出的静态分析。
本文只做技术可行性评估,不提供任何实现代码。所有结论均标注源码出处,可逐条复检。

范围说明:这里评估的是静态代码是否覆盖某些 Android 能力,不代表这些能力可以在普通用户设备上稳定工作。系统版本、ROM、签名级权限和用户授权都会改变结果。


〇、先把”锁机”拆成要件

“锁机”(屏幕勒索/整蛊软件)在技术实现上可以拆成三个必要件 + 三个加固件:

要件 作用 对应 Android 技术
① 全屏覆盖 把桌面/系统界面压在下面,看起来”手机锁了” 透明 Activity / 特殊窗口类型 / 悬浮窗
② 抢前台 用户按返回/Home 退不掉,重新拉全屏界面 Activity 生命周期里反复 startActivity
③ 杀不死 用户强行停止后还能复活 多进程互拉 / START_STICKY / 前台服务
④ 开机自启 重启后自己先起来 BOOT_COMPLETED 接收器 / 定时任务
⑤ 防卸载 卸不掉,破解不了 设备管理员 DeviceAdmin / 无障碍拦截
⑥ 状态保持 息屏、关通知、省电优化别把它弄死 DISABLE_KEYGUARD / 通知权限 / 电池优化豁免

核心问题:应用宝这套东西,六样里现成有几样?缺的能不能补?


一、结论先行

能做出一个”很像锁机”的东西,但这不是”把应用宝改一下”,而是”把应用宝的保活和弹窗模块拆出来,再自己补上锁机特有的那几块拼图”。

打分:

要件 应用宝现状 改造难度
① 全屏覆盖 有相关分支:特殊窗口类型与透明 Activity 的代码路径 中 —— 是否可用取决于系统和权限,不能视为无权限能力
② 抢前台 半成品:只有”弹出来 10 秒自动消失”,没有”退掉立刻重弹” 中 —— 要自己写 Activity 版重弹逻辑
③ 提高存活率 有相关组件:多进程、START_STICKY 和生命周期钩子 中 —— force-stop、电池策略和 ROM 仍可终止
④ 开机自启 声明了相关接收器:BOOT_COMPLETED / WorkManager 路径 中 —— 需用户允许自启动,且受系统限制
⑤ 防卸载/防破解 缺口:有无障碍服务但用途是自动安装;完全没有 DeviceAdmin 高 —— 这是最大缺口
⑥ 状态保持 一半:有 DISABLE_KEYGUARD;缺电池优化豁免、精确闹钟、通知 中

一句话:应用宝包含部分相关工程组件,但“锁机”所需的稳定前台控制、设备管理授权和抗终止能力并不由这些静态组件自动提供。


二、逐项对照:哪些现成,哪些要补

① 全屏覆盖 —— 存在相关路径,但不能视为无权限能力

这是应用宝最接近锁机的一环。静态代码中能看到两类上屏路径,但它们都需要在具体系统上验证:

  • 特殊窗口类型:核心渲染器根据 API 和 ROM 选择 2003、2038 或 2998 等类型;FloatingWindowManager.e(boolean) 显式区分授权状态。addView 调用链里未见显式的 SYSTEM_ALERT_WINDOW 判断,但最终是否能显示仍由 WindowManager 和系统权限校验决定。
  • 出处:com/tencent/pangu/module/desktopwin/template/container/LocalWindowSupportView.java、com/tencent/assistant/st/STConst.java:1038、com/tencent/nucleus/manager/floatingwindow/manager/FloatingWindowManager.java、yyb9272855/q80/xf.java
  • 透明 Activity:Manifest 里注册了一批 Theme.Translucent 无标题栏 Activity(OperationDialogActivity、PopWindowTemplate1/2、PermissionRequestProxyActivity 等),startActivity() 不需要任何权限,透明主题让它看起来像系统弹窗。
  • 出处:app_decoded/AndroidManifest.xml(透明 Activity 声明段)

对评估的意义:这些代码说明客户端具备可配置的窗口展示组件和自动消失逻辑。把它们改成持续覆盖会改变产品安全边界,且是否能在无授权状态下工作取决于系统校验,因此本文不提供改造步骤或实现建议。

⚠️ 现实约束:2038 这类”无权限上屏”的洞在 Android 14 已明显收紧。应用宝自己的保活开关 WatermelonManager.c() 里就有 if (Build.VERSION.SDK_INT > 33) return false;——它对 Android 14+ 是主动认怂的(该洞被 ROM 补上)。所以”无权限全屏锁死”在旧系统/部分国产 ROM 上依然成立,但在 Android 14+ 上效果打折。

② 抢前台 —— 半成品,要自己补

应用宝的弹窗策略是“展示后自动消失”,并带有曝光频控条件。把它改成持续覆盖、反复抢前台或拦截用户操作,会直接改变用户设备控制边界,也会触发 Android 的后台启动与无障碍滥用风险。本文只记录这些差异,不提供 Activity 重建、按键拦截或绕过系统限制的实现步骤。

③ 提高存活率 —— 有组件,但不能保证“杀不死”

应用宝的保活体系在锁机语境下几乎可以直接搬:

  • 四进程互拉:MainLiveService / DaemonService / SentryAlphaService / SentryBetaService,各自独立进程(:live/:daemon 及两个混淆名进程),全 exported="true"。A 死 B 拉 A,B 死 A 拉 B——只要一个活着全家活着。
  • 出处:app_decoded/AndroidManifest.xml:977-984、com/live/watermelon/service/DaemonService.java、com/live/watermelon/WatermelonService.java
  • START_STICKY:onStartCommand 返回 2,被杀后系统自动重建并重放 intent。
  • 出处:com/live/watermelon/WatermelonService.java
  • Instrumentation 哨兵:Manifest 第二行就声明 com.live.watermelon.Instrumentation 挂在 :daemon 进程上,标记”process_alive_by_call_instrumentation=true”,连”被谁拉起来”都埋点统计(xd.f(45))。
  • 出处:app_decoded/AndroidManifest.xml:2、com/live/watermelon/InstrumentationImpl.java
  • 远程开关:保活总开关 is_watermelon_keep_alive_plugin_enable 是远程配置,用户不可见不可控——对锁机来说意味着复活策略可以云端下发。
  • 出处:com/live/watermelon/WatermelonManager.java:c()

对评估的意义:这些组件可用于研究后台任务的生命周期,但 force-stop、电池策略和系统回收都能终止它们。不能把多进程结构当作不可终止或可直接复用的锁机能力。

④ 开机自启 —— 现成

Manifest 里既有 WorkManager 的 RescheduleReceiver 监听 BOOT_COMPLETED,又有自研 ScheduleJobReceiver(priority 1000 的定时任务),还有 UninstallReceiver(priority 0x7FFFFFFF,记录卸载包名,为”卸载重装后恢复”做准备)。
– 出处:app_decoded/AndroidManifest.xml:420/462/1408、com/tencent/nucleus/UninstallReceiver.java

对锁机的意义:开机自启 + 卸载重装后的数据恢复,都是锁机”断电重启后继续锁”需要的,现成。

⑤ 防卸载/防破解 —— 最大缺口

  • 应用宝有无障碍服务:YYBAccessibilityService(BIND_ACCESSIBILITY_SERVICE 权限 + Manifest 声明),内部走 BaseInstallAccessibilityService,用 findAccessibilityNodeInfosByViewId/ByText + performAction 自动找按钮、模拟点击——用途是自动安装。
  • 出处:app_decoded/AndroidManifest.xml:639、com/tencent/yybsdk/installaccessibility/BaseInstallAccessibilityService.java
  • 应用宝没有设备管理员(无 BIND_DEVICE_ADMIN、无 device_admin.xml)、没有锁屏覆盖能力(仅声明了 DISABLE_KEYGUARD)。

对防护评估的意义:无障碍服务具有读取窗口和执行点击的能力,因此需要重点审查其授权范围和用户提示。本文不讨论把它改造成拦截设置或阻止卸载的实现。设备管理员是独立的授权机制,本样本未声明相关组件。

⑥ 状态保持 —— 一半

现成:DISABLE_KEYGUARD(防息屏锁)、FOREGROUND_SERVICE、WAKE_LOCK。
缺失:没有 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS(电池优化豁免)、没有 SCHEDULE_EXACT_ALARM(精确闹钟保活)、没有 POST_NOTIFICATIONS(前台服务通知在 Android 13+ 需要)。这些不致命,但都会让锁机”更容易死”。


三、改造路线图(概念层面)

如果真要拼一个”应用宝式锁机”,模块化看是这样的:

模块 来源 处理
全屏透明覆盖 应用宝 desktopwin 弹窗(2038/透明 Activity) 直接用,改成全屏常驻
抢前台 无现成 需要重新设计,且受 Android 后台启动限制
多进程互拉 + START_STICKY 应用宝 com.live.watermelon 只能作为生命周期研究对象,不能保证复用效果
Instrumentation 哨兵 应用宝 需特定安装和签名条件,不能直接迁移
开机自启 / 卸载重装恢复 应用宝 受用户设置、系统策略和数据生命周期限制
无障碍防破解 应用宝 YYB 无障碍 不建议改作拦截或阻止卸载用途
设备管理员防卸载 无 全部新增(最大的工作量和最大的授权障碍)
云端下发策略 应用宝 SwitchConfigProvider 模式 借鉴架构

结论:从静态结构看可以找到若干相关零件,但不能据此推断能稳定拼出锁机软件。 评估重点应放在系统版本差异、用户授权和可逆的检测验证上,而不是复用生产应用代码。


四、为什么现实中”应用宝式”锁机很少见 / 检测与反制

讨论可行性的时候,反方向也值得聊——这才是和朋友交流最有价值的点:

  1. ROM 在收紧:Android 14+ 对后台启动限制、前台服务类型、窗口类型的管制都在加强。应用宝自己 if (i > 33) return false 的认怂就是信号——依赖系统洞的锁机,生命周期在变短。
  2. 设备管理员拿不到就白搭:没有 DeviceAdmin 的锁机,用户在强制停止页一顿操作就破了;而 DeviceAdmin 是用户主动授权的,正是锁机最容易被识破、被举报的一步。
  3. 保活是”纸面强”:设置里 force-stop 能击穿一切 START_STICKY;系统级”电池优化 → 深度休眠”能把多进程互拉按在地上。真正的锁机更依赖”用户不敢乱动”而不是”技术杀不死”。
  4. 检测要点(反方向,可以写进防护文章):
  5. 突发全屏覆盖、无来源的”系统弹窗”→ 查最近启动的应用;
  6. 一个应用里 4+ 个独立进程 + 前台服务通知不可关 → 疑似保活木马;
  7. 突然要求”无障碍 + 设备管理员 + 电池不优化”三件套 → 高度可疑。

五、边界说明

本文仅对”应用宝的工程能力是否包含锁机所需技术”做静态可行性评估,不构成实现指导,也不提供代码。锁机类软件的常见用途(整蛊、勒索、对非技术人群的诈骗)都涉及对用户设备的破坏性控制,不在本分析的支持范围内——研究它的目的,是理解”手机里一个商店 App 的工程手段到底能做到什么”,从而在写检测/防护内容时有的放矢。

附注:本文所有引用均可从 jadx_out/sources/ 与 app_decoded/ 逐条复检。混淆类名保留原样。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇