宽表格和代码可左右滑动查看。
Phone Cleaner v1.2.4 权限与后台机制拆包报告#
精确包名:com.phone.cleaner.wafaApps;样本及资料日期:2026-10-28,Asia/Shanghai(北京时间)。六专题补充版。
S1=当前APK静态直接证据;S2=工具回读;S3=当前真机观察;I=推断;U=未验证。反编译不是原始源码,内置配置不是线上最终配置。发布状态单独记录于批次入口。
结论#
服务OuX2建立常驻ID103;一套Handler默认15秒周期调用注册的SltkD回调。初始化同时登记USER_PRESENT及安装/卸载事件,事件触发同一调度辅助器。另有JRH13一次性Work自登记链,最小延迟15000ms,执行后再次登记,并调用同一辅助器。[N2–N4]
USER_PRESENT的ZJX60S调用DwB(true),JRH13调用DwB(false),true可绕过辅助器自身的时间差检查,但不证明绕过业务通知门禁。Work的15秒是请求延迟,系统可延后执行;不是精确后台闹钟,也不是15秒发送通知。
权限声明、调用及实际授予#
下表完整保留本批Manifest的uses-permission声明;同名不同标签/受版本限制的声明不能直接相加为已获权限数量。运行时仅明确允许通知,未开启文件管理、使用情况、悬浮窗或通知读取等特殊访问;真实工具效果因此未验证。服务上的绑定保护权限与应用获准读取是两回事。
| 权限 | Manifest行 | 本轮用途/边界 |
|---|---|---|
android.permission.SYSTEM_ALERT_WINDOW |
15 | 悬浮窗特殊访问声明;本轮未开启。 |
android.permission.BIND_NOTIFICATION_LISTENER_SERVICE |
16 | 系统绑定通知监听服务的保护权限;uses-permission声明不代表获准读取通知。 |
android.permission.POST_NOTIFICATIONS |
17 | 展示通知;本轮仅此运行时权限已确认允许。 |
android.permission.FOREGROUND_SERVICE |
18 | 前台服务声明;是否使用以组件、调用及真机证据为准。 |
android.permission.FOREGROUND_SERVICE_DATA_SYNC |
19 | dataSync类型前台服务声明;未据此外推新版系统长期存活。 |
android.permission.MANAGE_EXTERNAL_STORAGE |
20 | 所有文件访问声明;未授权该特殊权限,真实扫描/删除未验证。 |
android.permission.PACKAGE_USAGE_STATS |
21 | 使用情况访问;本轮未开启特殊访问,不验证其他App使用数据。 |
android.permission.REQUEST_DELETE_PACKAGES |
22 | 请求系统卸载确认;本轮未执行卸载。 |
android.permission.INTERNET |
23 | 网络能力声明;联网业务、广告/配置调用需另核。 |
android.permission.ACCESS_NETWORK_STATE |
24 | 网络能力声明;联网业务、广告/配置调用需另核。 |
android.permission.ACCESS_WIFI_STATE |
25 | 网络能力声明;联网业务、广告/配置调用需另核。 |
android.permission.ACCESS_FINE_LOCATION |
26 | 精确位置声明;本轮未授予。 |
android.permission.ACCESS_COARSE_LOCATION |
27 | 大致位置声明;本轮未授予。 |
android.permission.CHANGE_WIFI_STATE |
28 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
com.android.alarm.permission.SET_ALARM |
29 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
android.permission.SET_WALLPAPER |
30 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
android.permission.VIBRATE |
86 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS |
87 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
android.permission.READ_WALLPAPER_INTERNAL |
88 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
com.google.android.gms.permission.AD_ID |
89 | 广告/归因生态声明;当前数据采集与出量状态未由权限表证明。 |
android.permission.WAKE_LOCK |
90 | 唤醒锁权限声明;本批未验证持有时长。 |
android.permission.ACCESS_ADSERVICES_ATTRIBUTION |
91 | 广告/归因生态声明;当前数据采集与出量状态未由权限表证明。 |
android.permission.ACCESS_ADSERVICES_AD_ID |
92 | 广告/归因生态声明;当前数据采集与出量状态未由权限表证明。 |
com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE |
93 | 广告/归因生态声明;当前数据采集与出量状态未由权限表证明。 |
android.permission.ACCESS_ADSERVICES_TOPICS |
94 | 广告/归因生态声明;当前数据采集与出量状态未由权限表证明。 |
com.android.vending.CHECK_LICENSE |
95 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
com.amazon.privacypass.ATTEST |
96 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
android.permission.READ_PHONE_STATE |
97 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
com.google.android.c2dm.permission.RECEIVE |
98 | Manifest声明已核对;具体业务调用/运行时效果本轮未逐项闭合。[U] |
com.phone.cleaner.wafaApps.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION |
100 | 应用自定义动态广播隔离权限。 |
系统API调用点复核#
不是只列Manifest:下表定位系统API/监听回调。业务命名空间与R8合并/工具类分开,后者只证明文件内含API,未把同文件的SDK路径当作业务调用已生效。未命中也不判定不存在,仍需从入口追踪。
| 能力 | 静态调用/候选位置 | 证据边界 |
|---|---|---|
| 所有文件访问检查 | Environment.isExternalStorageManager → com/phone/cleaner/wafaApps/ask1/GJh9.java:121(目标业务命名空间)Environment.isExternalStorageManager → com/phone/cleaner/wafaApps/wun14/O80k.java:33(目标业务命名空间) |
S1调用点;运行时U |
| 文件访问授权入口 | android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION → com/phone/cleaner/wafaApps/wun14/O80k.java:80(目标业务命名空间) |
S1调用点;运行时U |
| 使用情况查询 | .queryUsageStats → com/phone/cleaner/wafaApps/ask1/T0.java:178(目标业务命名空间).queryEvents → com/phone/cleaner/wafaApps/ask1/kG8dcx.java:86(目标业务命名空间).queryEvents → com/phone/cleaner/wafaApps/ask1/kG8dcx.java:141(目标业务命名空间) |
S1调用点;运行时U |
| 通知监听/清除 | onNotificationPosted → com/phone/cleaner/wafaApps/ke7/K5mJiN.java:19(目标业务命名空间) |
S1调用点;运行时U |
| 卸载请求 | android.intent.action.DELETE → com/phone/cleaner/wafaApps/ui/dialog/AppDialog.java:87(目标业务命名空间)android.intent.action.DELETE → com/phone/cleaner/wafaApps/ui/dialog/AppDialog.java:140(目标业务命名空间)android.intent.action.DELETE → com/phone/cleaner/wafaApps/ui/dialog/AppDialog.java:193(目标业务命名空间) |
S1调用点;运行时U |
| 摄像头/手电筒 | .setTorchMode → com/phone/cleaner/wafaApps/wun14/SdSN8.java:84(目标业务命名空间).setTorchMode → com/phone/cleaner/wafaApps/wun14/SdSN8.java:120(目标业务命名空间).setTorchMode → com/phone/cleaner/wafaApps/wun14/SdSN8.java:133(目标业务命名空间) |
S1调用点;运行时U |
| 系统设置写入 | 本轮模式未定位;可能混淆/封装,不能判定不存在 | U |
| 悬浮窗检查 | Settings.canDrawOverlays → com/phone/cleaner/wafaApps/ask1/GJh9.java:130(目标业务命名空间) |
S1调用点;运行时U |
| 媒体库访问 | MediaStore.Images → com/phone/cleaner/wafaApps/ask1/T0.java:341(目标业务命名空间)MediaStore.Images → veq/dto4.java:436(含目标引用的合并/工具类,具体调用链需另核) |
S1调用点;运行时U |
| 前台服务启动 | .startForegroundService → com/phone/cleaner/wafaApps/ke7/OuX2.java:38(目标业务命名空间) |
S1调用点;运行时U |
| 精确闹钟调用 | 本轮模式未定位;可能混淆/封装,不能判定不存在 | U |
| 唤醒锁 | 仅SDK/其他类命中,不作为业务调用证明 | U |
服务与广播清单#
以下为服务/广播中与业务后台、通知或恢复相关的声明;SDK类也注明为声明,不把第三方SDKJob直接算成自有恢复链。全部精确组件仍见本地Manifest索引。
| 类型/组件 | 动作 | FGS类型/保护权限 | Manifest行 |
|---|---|---|---|
service com.phone.cleaner.wafaApps.ke7.OuX2 |
无静态过滤器 | dataSync | 788 |
service com.phone.cleaner.wafaApps.ke7.K5mJiN |
android.service.notification.NotificationListenerService | android.permission.BIND_NOTIFICATION_LISTENER_SERVICE | 793 |
receiver com.phone.cleaner.wafaApps.h3cys.Z294 |
android.intent.action.USER_PRESENT | 未声明 | 801 |
service com.phone.cleaner.wafaApps.ke7.Kws1 |
com.google.firebase.MESSAGING_EVENT | 未声明 | 827 |
service com.google.firebase.components.ComponentDiscoveryService |
无静态过滤器 | 未声明 | 891 |
receiver com.google.firebase.iid.FirebaseInstanceIdReceiver |
com.google.android.c2dm.intent.RECEIVE | com.google.android.c2dm.permission.SEND | 1332 |
service com.google.firebase.messaging.FirebaseMessagingService |
com.google.firebase.MESSAGING_EVENT | 未声明 | 1343 |
业务页面中的权限入口#
| 页面 | 实际系统调用/入口 | 来源 |
|---|---|---|
| com.phone.cleaner.wafaApps.wun14.O80k | intent = new Intent("android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION"); | com/phone/cleaner/wafaApps/wun14/O80k.java:80 |
调度和恢复机制分别判断#
OuX2 为前台 dataSync 服务,使用 ID103;通知创建或前台启动失败时停止自身,成功路径返回1、失败路径返回2;onTimeout停止。常驻构造要求通知权限和有效渠道,渠道被禁用时不能按资源存在认定已展示。[A2][A3]
USER_PRESENT Receiver Z294 时间节流后enqueueUniqueWork;ZJX60S.doWork另有缓存时差门禁,再调用fhuzti.iTm.DwB.DwB(true)。后者触发已注册回调并重排默认15000ms的Handler;这不是Worker自己直接notify,未闭合全部回调条件前不推定解锁必发。RemoteWorker.doWork直接返回成功,不能仅凭类名写成“已刷新远端配置”。[A4][A5][A18][A19]
另有500ms Handler轮询及UsageStats 查询调用,要求对应使用情况访问门禁;本次未授予相关特殊权限,无法用这段静态代码证明运行时持续监控其他应用。
触发—条件—状态表#
| 阶段 | 已追到的调用链 | 关键边界 | 证据 |
|---|---|---|---|
| 产品身份 | Manifest HOME + 默认桌面引导 + 桌面帮助 | 清理与Launcher共存;默认桌面实际选择仍未验证 | N1 |
| 常驻 | OuX2 → permission/channel → foreground103 | 成功/失败返回及超时停止分别处理 | 原A2/A3 |
| 周期检查 | JRH13自登记 → 15秒辅助器 → 已注册回调 | 有调用不代表必发通知;不作为广告周期 | N2–N4 |
| 事件检查 | USER_PRESENT/包增删 → 同一调度辅助器 | 解锁强制检查与业务资格门禁是两层 | N3/N4 |
| 通知路由 | PendingPush/本地/FCM → 各ID → 中转页 | 五类通知分别解释来源样式与点击参数 | N5/原A6–A22 |
测试设备授权快照#
快照时间:2026-10-28T16:23:41+08:00。null/None表示本次输出没有该项或不适用,不解释为已拒绝;AppOps无显式记录也不解释为已授权。
| 类型 | 字段 | 本次值 |
|---|---|---|
| 运行时权限 | POST_NOTIFICATIONS | True |
| 运行时权限 | READ_EXTERNAL_STORAGE | None |
| 运行时权限 | WRITE_EXTERNAL_STORAGE | None |
| 运行时权限 | READ_MEDIA_IMAGES | None |
| 运行时权限 | READ_MEDIA_VIDEO | None |
| 运行时权限 | READ_MEDIA_AUDIO | None |
| 运行时权限 | CAMERA | None |
| 运行时权限 | ACCESS_FINE_LOCATION | False |
| 特殊访问 | MANAGE_EXTERNAL_STORAGE | NO_EXPLICIT_OPERATION |
| 特殊访问 | GET_USAGE_STATS | NO_EXPLICIT_OPERATION |
| 特殊访问 | SYSTEM_ALERT_WINDOW | NO_EXPLICIT_OPERATION |
| 特殊访问 | WRITE_SETTINGS | NO_EXPLICIT_OPERATION |
| 通知读取 | notification_listener_enabled | False |
系统限制与验证方法#
本轮短时Home/划卡存活与强停结果见真机专题;启动一个Job、注册Receiver、返回START_STICKY均不构成长期成功率。低内存杀进程、确认进入Doze、跨日调度和生产FCM仍需独立事件与时间窗。特殊权限只解释其具体功能用途,不把通知权限泛化为清理必需。
原有代码锚点 A#
| 编号 | 证明内容 | 本地源位置 | 核验 |
|---|---|---|---|
| A1 | 来源常量 | jadx/sources/dfxb/NcEpC.java:136–175 |
已回读 |
| A2 | 前台服务状态和ID103 | jadx/sources/com/phone/cleaner/wafaApps/ke7/OuX2.java:19–107 |
已回读 |
| A3 | 常驻渠道、布局和按钮 | jadx/sources/efluwe/yMHQ.java:30–100 |
已回读 |
| A4 | USER_PRESENT节流Work | jadx/sources/com/phone/cleaner/wafaApps/h3cys/Z294.java:18–36 |
已回读 |
| A5 | Worker方法为空业务成功 | jadx/sources/com/phone/cleaner/wafaApps/helper/RemoteWorker.java:9–18 |
已回读 |
| A6 | FCM数据和必填门禁 | jadx/sources/com/phone/cleaner/wafaApps/ke7/Kws1.java:64–159 |
已回读 |
| A7 | 远端通知ID57和点击中转 | jadx/sources/zfxgq/yR.java:114–146 |
已回读 |
| A8 | 本地55、通知清理58;R8合并类包含业务代码 | jadx/sources/com/applovin/impl/sdk/yMHQ.java:124–211 |
已回读 |
| A9 | 两组本地模板引用 | jadx/sources/kx/wzo.java:6–19 |
已回读 |
| A10 | 通知清理提示门禁 | jadx/sources/nar/MTds1.java:179–198 |
已回读 |
| A11 | 500ms调度入口 | jadx/sources/efluwe/iTm.java:16–29 |
已回读 |
| A12 | UsageStats实际查询调用 | jadx/sources/amwf/Em4De2.java:247–284 |
已回读 |
| A13 | Application发起Referrer连接 | jadx/sources/com/phone/cleaner/wafaApps/z3wxv/GZC9.java:168–177 |
已回读 |
| A14 | Referrer成功与noapi回退 | jadx/sources/zfxgq/yR.java:474–503 |
已回读 |
| A15 | 来源解析、回退及持久化 | jadx/sources/com/phone/cleaner/wafaApps/ask1/T0.java:55–118 |
已回读 |
| A16 | 来源控制的附加原生广告分支 | jadx/sources/com/phone/cleaner/wafaApps/ask1/wzo.java:70–99 |
已回读 |
| A17 | 安装卸载通知ID59与来源样式分支 | jadx/sources/ft/Ac.java:125–181 |
已回读 |
| A18 | 解锁Work继续触发调度辅助器 | jadx/sources/com/phone/cleaner/wafaApps/h3cys/ZJX60S.java:21–31 |
已回读 |
| A19 | 默认15秒回调及重排;非固定发送 | jadx/sources/fhuzti/Ac.java:18–43 |
已回读 |
| A20 | 安装/卸载文案资源 | jadx/sources/kx/Tt.java:6–17 |
已回读 |
| A21 | 来源标记的实际判定 | jadx/sources/com/phone/cleaner/wafaApps/ask1/r49.java:277–282 |
已回读 |
| A22 | RemoteViews字段到横幅/展开视图的绑定 | jadx/sources/io/vxZF.java:194–207 |
已回读 |
本轮补充代码锚点 N#
| 编号 | 证明内容 | 本地源位置 | 核验 |
|---|---|---|---|
| N1 | 默认桌面/广告FAQ绑定资源 | jadx/sources/com/phone/cleaner/wafaApps/wun14/P4Kqf.java:15–52 |
已回读 |
| N2 | 15秒Work自登记与回调链 | jadx/sources/com/phone/cleaner/wafaApps/h3cys/JRH13.java:30–68 |
已回读 |
| N3 | Handler初始化及解锁/包事件注册 | jadx/sources/efluwe/RP.java:468–510 |
已回读 |
| N4 | 强制/普通检查与重排 | jadx/sources/fhuzti/Ac.java:18–43 |
已回读 |
| N5 | 待发事件模型的边界 | jadx/sources/com/phone/cleaner/wafaApps/helper/pushmanage/PendingPush.java:4–10 |
已回读 |
六专题导航#
| 专题 | 用途 |
|---|---|
| 产品功能与商业化分析 | 业务任务、页面、广告与来源链 |
| 权限与后台机制拆包报告 | 声明、调用、实际授权和功能边界 |
| 保活与拉活反编译代码册 | 机制图、主链步骤、代码片段与控制流修复 |
| 拉活通知规则与文案全量报告 | 触发、状态、频控、动作、候选和多语言全文 |
| 样本与证据索引 | 版本、split、签名、定位与证据范围 |
| 真机动态验证与后台存活报告 | 真实操作、后台矩阵、观察与未执行项 |