Flutter AOT + Refoto Native 查无可查总结
本报告只收束本轮用户指定的 2/4 深挖:Flutter AOT/blutter 和 Refoto native/Ghidra。目标不是再堆更多字符串,而是明确当前已经能学到什么、哪些结论已经有交叉证据、以及哪些问题进入静态分析停止点。
2 个Flutter AI 图片 App 已补 arm64 split 并跑通 blutter
8 个Refoto native 关键库完成 JNI/symbol/string/Ghidra 摘要
3 类停止点:完整源码、真实接口、运行时付费/广告触发
一、总结论
- Flutter release AOT 可以分析到产品结构层。 arm64 + blutter 能恢复 Dart package 路径、页面/模块名、assets、广告位、IAP/paywall/Remote Config 线索和 endpoint 候选。
- Flutter AOT 不等于完整源码还原。 静态产物不能稳定还原完整 Dart 源码和真实控制流;生产 AI API、远端配置、广告频控、paywall 触发需要动态证据。
- Refoto 的本地 AI/媒体能力已经可确认。 MNN bridge、OpenCL runtime、smart crop、face landmark、FastCV 预处理、RxFFmpeg wrapper 均有 native + smali + model assets 交叉证据。
- Refoto 的服务端生成协议到静态边界了。 HD enhance、PeopleRemove、TemplateGenerate 的 task create/query/result 需要从网络 smali 和运行时 HAR/Frida 继续补。
二、样本级结论
| App | 已还原内容 | 静态停止点 | 后续最值钱的补证 |
|---|---|---|---|
|
AI Art Magic - Photo Generator Flutterarm64blutter version 1.1.9 |
first-party prefix 为 package:flutter_base;top modules 包括 try_anime_style、ai_tool、admob、ai_gen、config、photo_cropper、photo_selector、onboarding。可见 PremiumScreen、MyPurchasesManager、IapConfigModel、Firebase Remote Config、AdMob placements,以及 api.code12.cloud paygate/fusion 相关候选路径。
|
不能确认完整 Dart 控制流;local-build-9v5.pages.dev/config.json 和 Remote Config 可能覆盖广告/功能配置;AI 生成真实请求体、任务状态和结果下载需要运行时证据。
|
抓首次启动 Remote Config;跑 anime/style、remove object、enhance、fusion 的受控图片请求链;hook purchase/paywall/广告展示方法确认触发频率。 |
|
AI Photo Lab: Generate & Edit Flutterarm64blutter version 1.0.1 |
first-party prefix 为 package:ai_photo;top modules 包括 object_removal、background_editor、ai_generate、final_result、pick_image、intro、auto_enhance。可见 object_removal_controller、background_editor_view、final_result_controller、app_pages.dart,并恢复 33 个 AdMob id 和 reward_remove_obj、reward_remove_background、reward_auto_enhance、reward_regenerate 等广告位。
|
生产 AI host 未明显落在静态字符串里;继续 strings/Ghidra 对接口语义收益低。reward gate、remove watermark、订阅态和失败态需要动态确认。 | 运行 remove object/remove background/auto enhance,抓 host、上传体、task/result;hook Dio/http client 或平台网络层确认 host 是否 runtime 注入。 |
|
Refoto : AI Photo Studio NativeGhidraMNN version 1.1.0 |
libXYAIBridge.so 确认模型 bridge/encrypt/decrypt;libXYAIBridgeMNNJni.so 确认 MNN Init/Forward/GetInputShape/Release;libXYAI_CL.so 确认 OpenCL kernel/cache/precision;libXYAutoCropJni.so 确认 smart crop;libXYFaceLandmarkJni.so 确认 face landmark/expression;libXYFastCV.so 确认 warp/resize/crop/normalize/alphaBlend;librxffmpeg-*.so 确认 media invoke/player wrapper。assets 里有 smartcrop 和 face 的 .xymodel 元数据。
|
本地能力边界已经清楚;全量反编 FFmpeg/MNN core 不划算。HD enhance、PeopleRemove、TemplateGenerate 的远端 task 协议、模板缓存和上传前后链路还不能靠 native alone 还原。 |
追 BaseGenerateLoadingActivity、AiQueryTaskListResponse、workflowInfoJson 到 Retrofit/OkHttp endpoint;用受控图片跑 HD/PeopleRemove/TemplateGenerate 并抓 create/query/result。
|
三、Refoto 本地能力图
可确认链路:Activity/业务页面选择图片 -> smart crop/face landmark/FastCV 预处理 -> MNN/OpenCL 本地推理或图像变换 -> FFmpeg encode/player wrapper -> 服务端生成或模板结果流程。
assets/engine/ai/smartcrop/data.json:face_det.xymodel、object_det.xymodel、salient_det.xymodel、pet_det.xymodel,metadata 标注 MNN/CPU。assets/engine/ai/face/data.json:fds.xymodel、fo.xymodel、fas.xymodel,分别对应 face detection / face val / face landmark。- smali 侧
XYAIBridge调XYBackendMNN.Forward/GetInputShape/Init/Release;EngineFace调QFaceLandmark;Activity 命名显示HighDefinition、PeopleRemove、TemplateGenerate等产品功能面。
四、为什么现在可以判定“静态查无可查”
| 问题 | 当前证据状态 | 继续静态的收益 | 正确下一步 |
|---|---|---|---|
| Flutter 能否看产品方案/界面/模块? | 能。两个样本都恢复到 package 路径、页面名、Controller/View、assets、广告位和商业化配置。 | 中低。继续扩大 strings 只会增加噪声。 | 把模块映射成产品流程;对关键流程做真机补证。 |
| Flutter 能否看接口? | AI Art 有 code12/cloud 与 paygate/fusion 候选;AI Photo Lab 生产 AI host 不明显。 | 低。host 可能 remote config 或 runtime 注入。 | HAR + Frida hook http/Dio/platform channel。 |
| Refoto 本地 AI 是否真存在? | 存在。native JNI、MNN/OpenCL、xymodel assets、smali bridge 已交叉确认。 | 低到中。只在需要函数级细节时才继续 Ghidra GUI。 | hook JNI 入参/出参,确认本地处理与上传边界。 |
| Refoto 生成效果如何实现? | 静态已看到生成/模板/HD/PeopleRemove 页面和本地预处理,但服务端任务协议未闭环。 | 低。native 不会给出服务端语义。 | 追网络 smali + 运行时 task create/query/result。 |
五、后续复用流程
- Flutter 样本优先采集含
arm64-v8a/libapp.so的 APK/XAPK split;没有 arm64 时先只做基础静态,不浪费 blutter/Ghidra 时间。 - 跑 blutter 后先看
package:前缀、top modules、top first-party paths、assets、AdMob ids、Remote Config/IAP/paywall 信号。 - native-heavy 样本先按库名分业务 wrapper 与三方 core;Ghidra 优先跑 JNI wrapper、业务命名库、模型/算法桥接库。
- 当静态已经回答“本地做什么、模块叫什么、候选接口在哪里”后,立刻进入动态补证,而不是继续扩大反编译范围。
六、证据入口
- AI Art Magic Flutter AOT arm64 深挖报告
- AI Photo Lab Flutter AOT arm64 深挖报告
- Refoto native/Ghidra 深挖报告
- APK 静态/深挖分析能力 Playbook
清理规则:本报告提交摘要、判断和相对证据入口;APK、XAPK、解包目录、Ghidra project、blutter 原始输出继续留在 ignored 本地目录。