报告口径本页直接渲染本地报告真源;静态能力、动态观察、推断和线上未验证项不得互相替代。
NeatPulse v1.0.3 保活恢复、通知召回与产品族群逆向报告#
包名:
com.np.clean
样本:Google Play 当前安装包,versionName V1.0.3,versionCode 4
测试设备:Pixel 6a,Android 16 / API 36
报告日期:2026-08-31
1. 一页结论#
- [静态 + 动态确认] NeatPulse 使用与 CleanMas/CleanLoom 高度一致的白标常驻框架。 主 FGS
OzIg4T4.eE0e为specialUse/quick entry、START_STICKY;正常启动 PID31619、通知 ID8781。 - [静态确认] 快速恢复 Job 为 2.268–4.268 秒;周期 persisted Job 为 21分38秒–21分40.268秒;Alarm 约 8 小时。
- [动态确认] 正常打开后主 FGS、周期 Job ID
2913和 8 小时 Alarm 均真实存在。 - [动态确认] 本次重启没有成功恢复前台服务。 Boot Receiver 确实创建了进程,周期 Job 和 Alarm 也恢复;但主 FGS 与短 JobService 都被 Android 16 以
mAllowStartForeground=false拒绝,超过 75 秒仍没有isForeground=true。 - [重要解释] 它不是完全没拉起,而是“进程被广播拉起、FGS 建立失败”。 观察到 PID 和 Firebase/WebView 服务不能等价为常驻成功。
- [动态确认] Force Stop 是硬边界。 隔离测试 1 秒和 16 秒均无 PID,
stopped=true。 - [动态确认] 正常启动时看到 ID
4545、importance 5 的业务通知。 它与 CleanLoom 的通知 ID/flags/RemoteViews 形态一致。 - [族群高置信] NeatPulse 虽然品牌和签名独立,但与 CleanMas 有 917 条 strings 精确相同,并共享 FGS/双 Job/Alarm/Boot/FCM/通知监听器和时间抖动算法。 应归入同一技术母版,不直接认定同一商店主体。
2. 样本身份#
| 项目 | 值 |
|---|---|
| 应用名 | NeatPulse |
| applicationId | com.np.clean |
| 版本 | V1.0.3(versionCode 4) |
| minSdk / targetSdk | 24 / 36 |
| base APK 大小 | 45,203,129 bytes |
| base APK SHA-256 | 8b4480f948c9cd1be768e05914e9616362c3b642501ecad352434c479eaa58d4 |
| 签名 SHA-256 | ef858dc7a6b964266e0bf0857b8903b20ecdb768b0486d43e7e176a63bc4e537 |
| 业务代码根 | www.real.tea |
| 配置域名 | https://rne.privaaclean.com |
| 安装来源 | Google Play,installer=com.android.vending |
3. 保活与恢复#
Boot / 正常启动 / onDestroy / onTaskRemoved
│
▼
OzIg4T4.eE0e 主 FGS
specialUse / quick entry / START_STICKY / ID 8781
│
▼
a8US063.eE0e 短 Job(2.268–4.268 秒)
Zt0.eE0e:约 21.6 分钟 persisted Job
E5445lT.eE0e:约 8 小时 Alarm
ZZAa3.eE0e:BOOT_COMPLETED / MY_PACKAGE_REPLACED
e2ZEoz6.eE0e:FCM
| 组件 | 当前值 | 作用 |
|---|---|---|
| 主 FGS | ID 8781,specialUse,START_STICKY |
正常打开后的常驻载体 |
| 快速 Job | 2,268–4,268ms | FGS 恢复桥接,但本次 Boot 后被系统拒绝前台资格 |
| 周期 Job | 1,298,000–1,300,268ms | persisted/high 周期机会 |
| Alarm | 28,799,356ms | 约 8 小时通知/topic 维护 |
| Boot Receiver | Boot + 包更新 | 创建进程并进入恢复 helper |
3.1 真机结果#
| 场景 | 结果 |
|---|---|
| 正常启动 | PID 31619;主 FGS 前台;ID 8781;START_STICKY |
| Job | ID 2913;约 21分38秒–21分40.268秒;persisted/high |
| Alarm | 约 7小时59分51秒后;window 1 小时 |
| Force Stop | 1 秒、16 秒均无 PID,stopped=true |
| 重启 45 秒 | 无 PID;Job 与 Alarm 已恢复排队 |
| 重启约 75 秒 | PID 15887 出现;Boot Receiver、Firebase Session、WebView 有活动;主 FGS ServiceRecord app=null、startForegroundCount=0 |
| 系统日志 | 主 FGS 与短 JobService 均出现 startForeground... not allowed |
因此本次 Boot 结论必须写为:广播能拉起进程并恢复调度,但没有建立前台服务,保活恢复失败。 这也说明同一白标框架在不同包、不同 Boot 投递时序下可能产生不同结果。
4. 通知召回#
4.1 本轮动态#
| 类型 | 观察 |
|---|---|
| 常驻通知 | 正常打开时 ID 8781,渠道 NeatPulseOGA,Ongoing/Only alert once |
| 业务通知 | ID 4545,渠道 NeatPulseJBs,importance 5,Ongoing + Auto cancel |
| Boot 后 | 主 FGS 未成功,因此没有把进程存在误记为常驻通知成功 |
4.2 静态规则#
NeatPulse 与 CleanMas/CleanLoom 的通知模板和门槛高度一致:
- 入口:TIMER、HIGH、BOOT、HOME、UNLOCK、UPGRADE、包变更、电池、网络、截图、后台、FCM;
- 门槛:App 不在前台、未锁屏、屏幕亮、竖屏、首次延迟、
last_noti_time冷却、场景计数; - 模板:Memory/RAM/Storage、Junk、Screenshots、Full charged、Low battery、Charging started、Network switched;
- FCM topic 订阅失败从 30 秒指数退避到 24 小时。
这些都是客户端候选路径;服务端人群、发送频率、TTL、优先级和真实曝光量不可从 APK 得出。
5. 产品族群#
| 指纹 | NeatPulse | CleanMas/CleanLoom | 判断 |
|---|---|---|---|
| 签名 | 独立 ef858d… |
同签名 fe2573… |
非同签名发布 |
| 业务根 | www.real.tea |
jahkshfa.hk.ep |
品牌分支不同 |
| strings | 960 条 | CleanMas 943 条 | 917 条精确相同 |
| FGS | specialUse/quick entry |
同构 | 一致 |
| 恢复任务 | 快速 Job + 21.6m Job + 8h Alarm | 同算法 | 一致 |
| 通知模型 | 同事件码、模板、门槛 | 同构 | 一致 |
结论:NeatPulse 是同一技术母版的独立品牌/发布分支。 代码同源置信度高,但缺少同签名、同开发者或同域名证据,因此不认定它和 BetterFly Games 是同一法律主体。
6. 未验证项#
- 多次重启后是否偶尔能在 Boot 临时白名单窗口内成功建立 FGS。
- 21.6 分钟周期 Job 到期后是否能从无 FGS 状态恢复主服务。
- 不同 ROM、长期 Doze、后台限制设置下的恢复率。
- ID
4545的准确场景、文案和点击路由。 - Remote Config 与 FCM 服务端策略。
- Force Stop 无法突破。
7. 证据位置#
- APK:
Clean/cleaner-7-pack-2026-08-31/neatpulse/apk/ - JADX:
Clean/cleaner-7-pack-2026-08-31/neatpulse/jadx/ - 关键类:
OzIg4T4/eE0e.java、a8US063/eE0e.java、Zt0/eE0e.java、E5445lT/eE0e.java、ZZAa3/eE0e.java、e2ZEoz6/eE0e.java - 动态证据索引:
Clean/cleaner-7-pack-2026-08-31/neatpulse/evidence/证据索引.md