Clean Sweep Master v1.2.0 保活恢复、通知召回与产品族群逆向报告
Clean Sweep Master v1.2.0 保活恢复、通知召回与产品族群逆向报告返回竞品库
报告口径本页直接渲染本地报告真源;静态能力、动态观察、推断和线上未验证项不得互相替代。

Clean Sweep Master v1.2.0 保活恢复、通知召回与产品族群逆向报告#

包名:com.cleansweepmaster.clsm
样本:Google Play 当前安装包,versionName 1.2.0versionCode 1200
测试设备:Pixel 6a,Android 16 / API 36
报告日期:2026-08-31
范围:保活与恢复、通知召回、产品族群;不展开清理功能页面。

1. 一页结论#

  1. [静态 + 动态确认] 正常打开后确实运行常驻前台服务。 CoreTaskExecutordataSync FGS,通知 ID 3、渠道 resident,返回 START_STICKY;本机启动后 PID 27015,服务为 isForeground=true
  2. [静态确认] 它使用三层周期机会,但职责并不相同。 Job ID 100 约每 30 秒执行并续排自己;WorkManager 唯一任务 WorkerServiceUnique 使用系统最低的 15 分钟周期;START_STICKY 负责系统回收后的服务重建请求。
  3. [重要边界] 30 秒 Job 本身没有直接启动主 FGS。 StreamlinedJobScheduler 的已还原逻辑主要是续排 Job;不能把“Job 每 30 秒运行”写成“每 30 秒一定拉活服务”。
  4. [静态确认] Manifest 中的 SolarMonitor 看似监听开机、亮屏、灭屏和解锁,但它继承的 onReceive() 在当前 DEX 中为空。 开机时进程仍会因广播被创建,随后 Application.onCreate() 尝试启动 FGS;这和接收器自身完成拉活不是一回事。
  5. [动态确认] 本次 Android 16 重启后没有建立成功的 FGS。 系统确实为 SolarMonitor 创建进程,但日志明确记录 startForegroundService() not allowed;最终 CoreTaskExecutor 的 ServiceRecord 为 app=nullstartForegroundCount=0,不能写成“开机恢复成功”。
  6. [动态确认] Force Stop 是硬边界。 单独强停后 1 秒和 16 秒均无 PID,包为 stopped=true
  7. [静态确认] 通知召回由 Remote Config 控制。 覆盖安装/卸载、充电开始/结束/低电量和 FCM;配置模型包含总开关、活动弹窗开关、功能/应用/充电日上限,以及首条/第 2 条/第 3 条间隔。
  8. [族群结论] 当前没有证据把它归入另外五个白标样本的同一技术底座。 它的组件名、业务代码、通知配置模型、签名和恢复链均不同,应作为独立技术族处理。

2. 样本身份与边界#

项目
应用名 Clean Sweep Master
applicationId com.cleansweepmaster.clsm
版本 1.2.0(versionCode 1200
minSdk / targetSdk 24 / 35
base APK 大小 35,875,794 bytes
base APK SHA-256 e8655ab0550a159f8f03018f82d7c3f93f35fd8d99f959d4f1194675b0687700
签名 SHA-256 5cb3448e4200add077d811aba9a5ca4b266816bb0c1ac09ea11d05f56f01933c
安装来源 测试机 Google Play,installer=com.android.vending,base + split 已拉取

证据标签:

  • 静态确认:Manifest、DEX、资源中直接可见。
  • 动态确认:本次设备实际 PID、Service、Job、Notification、Package stopped 状态或系统日志。
  • 合理推断:多条事实共同支持,但没有服务端或多设备验证。
  • 待验证:当前观察窗不足。

JADX 已完成源码和资源还原,但存在反编译错误;关键结论同时回查了父类、Manifest 和真机状态。Remote Config 本地默认值不等于线上最终值。

3. 保活与恢复结构#

正常启动 / Application.onCreate
             │
             ▼
 CoreTaskExecutor(dataSync FGS)
 通知 ID 3 / START_STICKY

并行后台机会:
Job ID 100:约 30 秒后运行 → 续排自身
WorkManager:WorkerServiceUnique → 15 分钟周期
SolarMonitor:Boot/屏幕/解锁广播,但当前 onReceive 为空
组件 当前行为 结论
CoreTaskExecutor 继承常驻 Service 父类;启动前台通知;onStartCommand=START_STICKY 主常驻载体
StreamlinedJobScheduler Job ID 100;最小延迟 30 秒;执行后续排自身 周期执行机会,不是已证明的 FGS 拉起器
WorkerServiceUnique WorkManager 周期任务,构造最终落为 15 分钟 长周期后台机会
SolarMonitor Manifest 监听 Boot/Screen/User Present;父类当前 onReceive() 为空 更接近触发进程初始化的壳,不应写成完整 Boot 拉活逻辑
FCMService 自定义 FirebaseMessagingService;代码包含消息到达和展示日志 Push 入口;未获得服务端发送策略
AppMonitorReceiver 动态监听包安装/卸载 应用变更召回入口
ChargeReceiver 监听充电开始、结束、低电量 电池召回入口

3.1 动态结果#

场景 结果 证据解释
正常打开 10 秒 PID 27015CoreTaskExecutor 为 FGS;ID 3types=dataSyncstartCommandResult=1 常驻服务真实存在
Job cmd jobscheduler get-job-state ... 100 返回 waiting Job 已注册,不代表准点执行
非 Force Stop 进程死亡 无 Root 测试机无法杀掉受 FGS 保护的应用 UID;am kill 不回收 本轮未动态证明冷进程恢复
单独 Force Stop 1 秒、16 秒无 PID;stopped=true 硬边界成立
重启约 45 秒 进程因 SolarMonitor 广播创建;FGS 启动被系统拒绝;ServiceRecord app=null 有尝试,无成功常驻

系统日志关键事实:

  • Start proc ... for broadcast {com.cleansweepmaster.clsm/...SolarMonitor}
  • startForegroundService() not allowed due to mAllowStartForeground false
  • App ... became active but still in NEVER bucket

因此本包在 Android 16 上的真实结论是:前台打开后能常驻;开机后台拉 FGS 本轮失败;Force Stop 无法突破。

4. 通知召回#

4.1 常驻通知#

项目
通知 ID 3
渠道 resident
flags `ONGOING_EVENT
展示 自定义 RemoteViews,timeout 72 小时

该通知的目的首先是维持 FGS 可见性,不应计为营销召回曝光。

4.2 业务召回入口#

入口 静态行为 配置边界
安装其他 App 后台时生成安装提醒;Android 29+ 主要走通知回退 总开关、应用类上限、场景间隔、总通知数
卸载其他 App 后台时生成卸载残留提醒 同上
充电开始/结束/低电量 进入 Charge 提醒链 Charge 开关、日上限、间隔
FCM 自定义 Service 接收;SDK 仍可能处理 notification payload 自动展示 服务端人群、TTL、优先级、频控未知
Remote Config 下发通知开关、上限、首条/后续间隔和文案 本地默认不代表线上值

代码中可见两组默认上限构造:一组约为功能 18、充电 3、应用 3,另一组约为 3/1/1;但各状态默认关闭并可被 Remote Config 覆盖,所以只能写为“内置候选默认”,不能写成当前线上日上限。

5. 产品族群#

维度 Clean Sweep Master 五包白标核心
主 FGS CoreTaskExecutordataSync 混淆类,specialUse/quick entry
恢复任务 30 秒 Job + 15 分钟 Work 2–7 秒恢复 Job + 21–25 分钟持久化 Job + 8 小时 Alarm
Boot SolarMonitor 当前接收逻辑为空 自定义 Boot Receiver 进入恢复 helper
通知模型 Remote Config 的 function/app/charge 模型 A/B/D/网络/截图等事件码模型
签名 5cb3448e… 各自不同;CleanMas/CleanLoom 同签名
代码根 com.cleansweepmaster.clsm 三组不同业务根,但核心混淆框架同构

结论:Clean Sweep Master 是独立产品/代码族,不能因为同为 Cleaner 就并入另外五包。

6. 风险与未验证项#

  • dataSync 类型从 Boot 启动在新 Android 版本受更强限制,本次已观察到后台 FGS 启动拒绝。
  • Job 每 30 秒续排属于高频后台调度诉求,系统并不承诺严格执行,也可能触发配额和电量限制。
  • 未动态等待完整 15 分钟 WorkManager 窗口。
  • 未拿到 Remote Config 当前线上值、FCM 服务端策略和实际到达率。
  • 未在其他 ROM、通知权限关闭、长期 Doze、系统回收进程条件下验证。

7. 证据位置#

  • APK:Clean/cleaner-7-pack-2026-08-31/clean-sweep-master/apk/
  • JADX:Clean/cleaner-7-pack-2026-08-31/clean-sweep-master/jadx/
  • Manifest:Clean/cleaner-7-pack-2026-08-31/clean-sweep-master/jadx/resources/AndroidManifest.xml
  • 关键源码:CoreTaskExecutor.javaStreamlinedJobScheduler.javaSolarMonitor.javaPhoneCleanFinderManagerPro.javaAppMonitorReceiver.javaChargeReceiver.javaFCMService.java
  • 动态证据索引:Clean/cleaner-7-pack-2026-08-31/clean-sweep-master/evidence/证据索引.md
竞品拆包报告库 · 逆向结论按证据等级阅读