Flutter AOT + Refoto Native 查无可查总结

日期:2026-06-10 | 状态:active | Owner:package-forensics | Review cadence:每轮新增 APK 批次后复盘一次

本报告只收束本轮用户指定的 2/4 深挖:Flutter AOT/blutter 和 Refoto native/Ghidra。目标不是再堆更多字符串,而是明确当前已经能学到什么、哪些结论已经有交叉证据、以及哪些问题进入静态分析停止点。

2 个Flutter AI 图片 App 已补 arm64 split 并跑通 blutter
8 个Refoto native 关键库完成 JNI/symbol/string/Ghidra 摘要
3 类停止点:完整源码、真实接口、运行时付费/广告触发

一、总结论

二、样本级结论

App 已还原内容 静态停止点 后续最值钱的补证
AI Art Magic - Photo Generator
Flutterarm64blutter
version 1.1.9
first-party prefix 为 package:flutter_base;top modules 包括 try_anime_styleai_tooladmobai_genconfigphoto_cropperphoto_selectoronboarding。可见 PremiumScreenMyPurchasesManagerIapConfigModel、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_removalbackground_editorai_generatefinal_resultpick_imageintroauto_enhance。可见 object_removal_controllerbackground_editor_viewfinal_result_controllerapp_pages.dart,并恢复 33 个 AdMob id 和 reward_remove_objreward_remove_backgroundreward_auto_enhancereward_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 还原。 BaseGenerateLoadingActivityAiQueryTaskListResponseworkflowInfoJson 到 Retrofit/OkHttp endpoint;用受控图片跑 HD/PeopleRemove/TemplateGenerate 并抓 create/query/result。

三、Refoto 本地能力图

可确认链路:Activity/业务页面选择图片 -> smart crop/face landmark/FastCV 预处理 -> MNN/OpenCL 本地推理或图像变换 -> FFmpeg encode/player wrapper -> 服务端生成或模板结果流程。

四、为什么现在可以判定“静态查无可查”

问题 当前证据状态 继续静态的收益 正确下一步
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。

五、后续复用流程

  1. Flutter 样本优先采集含 arm64-v8a/libapp.so 的 APK/XAPK split;没有 arm64 时先只做基础静态,不浪费 blutter/Ghidra 时间。
  2. 跑 blutter 后先看 package: 前缀、top modules、top first-party paths、assets、AdMob ids、Remote Config/IAP/paywall 信号。
  3. native-heavy 样本先按库名分业务 wrapper 与三方 core;Ghidra 优先跑 JNI wrapper、业务命名库、模型/算法桥接库。
  4. 当静态已经回答“本地做什么、模块叫什么、候选接口在哪里”后,立刻进入动态补证,而不是继续扩大反编译范围。

六、证据入口

清理规则:本报告提交摘要、判断和相对证据入口;APK、XAPK、解包目录、Ghidra project、blutter 原始输出继续留在 ignored 本地目录。