XPoser_MiBackup - 小米云备份助手(虚拟一个小米智能存储设备实现云备份功能)
想法的种子
很早之前就想写个Xposed插件了,但一直没动手——倒不是懒,主要是Xposed开发的门槛确实有点高:得懂Hook机制、得会逆向分析、还得反复重启手机调试,一个ClassNotFound就能卡半天。
直到最近,AI编程助手逐渐成熟,我发现很多重复性的代码和调试工作可以丢给AI处理,于是果断开坑:写一个能让小米备份存到任意NAS的Xposed模块。
核心思路:欺骗备份App
小米备份App会通过DFS服务连接小米智能存储设备,我们要做的就是:
- Hook掉DFS的连接逻辑,返回一个虚拟的在线设备
- 拦截所有文件操作(上传/下载/列表/删除)
- 把这些操作重定向到用户配置的SMB、WebDAV或自定义HTTP服务上
- 听起来很清晰,实现起来全是坑。
最大的坎:混淆
小米备份的代码是混淆过的,类名、方法名全是a.b.c这种无意义字母。起初AI一直在Hook调用函数层面打转,对着反编译出来的smali代码硬找方法名,效率极低,还经常因为混淆后的名字在不同版本里不一样而失效。
后来想明白一个道理:不管它怎么混淆,底层无非还是调用库。Android的文件操作最终跑不了Java的File API或者JNI调用,网络请求也离不开Socket/OkHttp。混淆只是把皮换了一层,骨头没变。
抓住这个思路后,就不在Hook函数名上死磕了,而是去Hook那些不易变化的核心调用点,比如底层的读写流、回调接口。这个逻辑其实很简单,但AI第一时间没想到,还在给我推荐各种反混淆工具,属实有点“呆”。
AI的贡献:大量代码生成
想通核心逻辑后,剩下的就轻松多了:
SMB协议适配 → AI生成
WebDAV协议适配 → AI生成
自定义HTTP脚本引擎(Rhino JS)→ AI生成骨架
切片逻辑、配置管理、UI界面 → AI生成大部分
整个项目里,除了Hook点的定位和核心设计思路是我自己想的,其余调用层的实现基本都是AI写的。从零到跑通,只用了两周时间,中间密集迭代了10个版本。
一点感想
Xposed开发的门槛确实被AI拉低了不少,但AI目前还是欠缺一点“透过现象看本质”的能力——它会被混淆的表象带偏,而人类开发者需要做的,就是给它指出正确的方向。
项目源码
欢迎Star,欢迎提Issue一起完善。
地址:https://github.com/zgcwkjOpenProject/XPoser_MiBackup
版权属于:zgcwkj
本文链接:https://zgcwkj.cn/archives/277.html
转载声明:请注明本文章的标题及内容的出处和声明,谢谢
评论已关闭