MIUI 9 欧洲版移植小米公交、支付等服务

2017-09-29 14:10:38 +08:00
 linusyang
原因:因同时需要使用 Android Pay,MIUI 官方版装 GApps 仍然通不过 SafetyNet 验证,且 Google Play 是未验证的状态,转而刷 xiaomi.eu 的固件(即欧洲版,俗称波兰版)。不过小米支付都被精简掉了,只能自己动手移植回来。

操作很简单:把俗称“卡刷包”的官方 OTA 完整固件 system.img 提取出来,然后 deodex 以后放在 /system/app 目录即可。需要提取的 apk 有三个,Mipay.apk 、TSMClient.apk 和 UPTsmService.apk 。前两个要 deodex,最后一个 apk 直接拷贝即可。

手机型号 MIX 2,已测试可以绑定银行卡和开通公交卡。提取和 deodex 推荐用 https://bitbucket.org/superr/superrs-kitchen 的一条龙服务。

补充 1:支付安全问题可以通过全盘加密保障 (FBE),这样进恢复模式也需要先解密。xiaomi.eu 的固件取消了 boot.img 里面的强制加密,直接刷机后默认是解密状态,且无法再次加密。

唯一的方法是恢复 boot.img 的强制加密,这样在刷完固件第一次启动的时候会自动加密 /data 分区。恢复的方法是把 boot.img 里面 fstab.qcom 里面 /data 条目的加密选项从 encryptable=ice 改为 fileencryption=ice,具体含义可参见官方 API 文档。
58107 次点击
所在节点    Android
189 条回复
wangyilin1226
2018-01-21 07:29:54 +08:00
在格式化并清空存储后刷入 8.0 包和强制加密,系统启动后 rec 依旧不需输入密码进入,加密失败。
wangyilin1226
2018-01-21 07:44:43 +08:00
MIUI.eu 论坛里的 rec 不支持 FBE 解密,可以从这里 http://www.shuajizu.cn/forum.php?mod=viewthread&tid=18300&extra=page%3D1 下载解密版本。
Jormin
2018-01-21 14:35:17 +08:00
@wangyilin1226 请问你现在的系统是测试版的 8.1.18 不?强制加密的包是用的 OP stable 里的强制加密 zip 么?
wangyilin1226
2018-01-21 16:18:54 +08:00
@Jormin 我现在在 FBE 加密基础上直接刷入 Oreo 和刷入 Oreo 后刷入强制加密都会导致无法开机,现在修改 boot.img 试试
wangyilin1226
2018-01-21 16:31:16 +08:00
晕了,Oreo 解包 boot.img 后没有 fstab.qcom,是不是 MIUI.eu 开发者把 FBE 解密魔改掉了
wangyilin1226
2018-01-21 16:41:47 +08:00
Oreo 中去除了 fstab.qcom,和 MIUI 开发者没关系
https://source.android.com/security/encryption/file-based?hl=zh-cn
wangyilin1226
2018-01-21 16:46:26 +08:00
启用文件级加密
通过将 fileencryption=contents_encryption_mode[:filenames_encryption_mode] 标记添加到 userdata 分区最后一列的 fstab 行中,可以启用 FBE。contents_encryption_mode 参数定义了哪些加密算法用于文件内容的加密,filenames_encryption_mode 参数定义了哪些加密算法用于文件名的加密。contents_encryption_mode 只能是 aes-256-xts。filenames_encryption_mode 有两个可能的值:aes-256-cts 和 aes-256-heh。如果未指定 filenames_encryption_mode,则使用 aes-256-cts 值。
wangyilin1226
2018-01-21 17:05:04 +08:00
由于 Oreo 中 fstab 更换了位置
找到 OP5 的 Oreo 在解除 FBE 加密时

for fstab in /system/vendor/etc/fstab.*; do
[ -f "$fstab" ] || continue
print "Found fstab: $fstab"
sed -i "
s/\b\(forceencrypt\|forcefdeorfbe\|fileencryption\)=/encryptable=/g
" "$fstab"
found_fstab=true
done

似乎修改 fstab 位置后要修改三个项目才能引导开机加密?
wangyilin1226
2018-01-21 18:23:36 +08:00
魔改了一下别人给 OP5Oreo 做的去除加密可以加密了,我看看怎么上传上来
wangyilin1226
2018-01-21 18:28:11 +08:00
https://share.weiyun.com/0a0c59afb67ef61a43c8083430330318
刷入 Oreo 后刷入此文件即可解锁 DM 并加密 FBE、
wangyilin1226
2018-01-21 20:21:18 +08:00
另外最新稳定版的短信验证码快捷复制在 Oreo 也没有了,不知道是被屏蔽了还是没做进去。
linusyang
2018-01-21 20:38:42 +08:00
@wangyilin1226 Oreo 修改起来更简单了,不用改 boot.img 了,我直接加在 eufix 包的脚本里了:
https://github.com/linusyang92/mipay-extract/commit/c19df91012a131ef61222cef163357b8de7fa9fd

xiaomi.eu 经常乱改,比如 /data 分区的 quota 参数也没了,我在脚本里面加回来:
https://source.android.com/devices/storage/faster-stats
linusyang
2018-01-21 20:42:14 +08:00
@wangyilin1226 验证码这个估计是屏蔽了,可以反汇编短信程序看看。
linusyang
2018-01-21 21:28:09 +08:00
@wangyilin1226 我改了一下 com.android.mms.util.VerificationCodeUtils 里面对国际版的判断。如果是 mix2,可以试试把 eufix.zip 解包,覆盖 priv-app/Mms.apk ,看看复制验证码功能恢复了没有。
wangyilin1226
2018-01-21 22:39:11 +08:00
欧版再这么搞下去我就要跳坑国际版了...
linusyang
2018-01-21 23:31:39 +08:00
@wangyilin1226 这是小米的问题,国际版一样没有这些功能,eu 版就是因为把 build.prop 改成国际版才导致功能缺失,他们已经 patch 一部分 app,恢复了国内版的部分功能了。
Jormin
2018-01-22 00:41:39 +08:00
@linusyang 大神 所以直接刷 eufix 这个包 就可以加密系统了吗?(捂脸
Jormin
2018-01-22 00:43:27 +08:00
@linusyang 不需要刷好系统第一次开机刷吧?现在装了近 400 个 app 真是不敢乱来,怕卡米要清光数据重来
akkkkk77
2018-01-22 09:09:11 +08:00
我想请问,刷国际版系统,再单独安装小米支付之类的 app 可否
linusyang
2018-01-22 10:11:50 +08:00
@Jormin 呃,不行的,这个只能刚刷完机的时候加密。eu 的固件有 bug,在设置里点加密会卡米,所以才用这种临时方案,利用内核第一次启动时候根据 fstab.qcom 强制加密。
@akkkkk77 没试过,你可以试试?可能还要补其他 nfc 相关的 apk (smartcard,nextpay 之类的,没仔细研究)。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/394591

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX