Magisk 食用指南 (需搭配云服务器)
前言
部分内容在 GitHub 上格式出错,完整版在这里
这次使用的是服务端部署 UnblockNeteaseMusic + 本地 iptables 转发流量的实现方法。 原理上来讲是可以做到本地部署的,这样的话可以做到无成本,因为空余时间没那么多,就没去研究。 具体可以参考 https://github.com/Flysky12138/UnblockNeteaseMusic-Android 项目。
准备
- 一台位于大陆的服务器(必须是国内的,因为很多歌曲都只是买了大陆版权)
其实国外的服务器也可以,UnblockNeteaseMusic 提供了使用上游代理的方法,具体请查阅官方食用指南。
- 一台已 root 并安装了 Magisk 的手机
- 将网易云音乐移出 Magisk Hide 名单(未设置请忽略)
如果网易云音乐客户端在 Magisk Hide 名单内会导致证书不生效
服务端部署 UnblockNeteaseMusic
这个应该不用多说了,https://github.com/nondanee/UnblockNeteaseMusic 官方搭建方法已经写的很明白了,不过需要注意的是必须开启 HTTPS 并导入证书(接下来会讲到),否则会导致网易云音乐客户端个人页面和登录无法正常使用
Magisk 模块编写
这个的话我已经写好了,改一下配置即可
模块模板下载链接:https://rushb.lanzous.com/icgsqkh 密码: 6e01
修改 iptables 脚本
编辑 post-fs-data.sh 文件
http=127.0.0.1:8080 # 这里修改成你的服务器地址:UnblockNeteaseMusic http 端口
https=127.0.0.1:8081 # 这里修改成你的服务器地址:UnblockNeteaseMusic https 端口
re=$(grep -m1 -i "com.netease.cloudmusic" /data/system/packages.list | cut -d' ' -f2)
iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner $re -m tcp --dport 80 -j DNAT --to-destination $http
iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner $re -m tcp --dport 443 -j DNAT --to-destination $https
修改证书
我们知道,如果应用的 Target API 在 24 以上的话,应用就只会信任系统证书而不会信任用户证书,而刚好我们是 Magisk 模块,就可以顺便把系统证书也写进去
打开文件夹 system\etc\security\cacerts 我们以 UnblockNeteaseMusic 证书为例,他的证书为 ca.crt
我们把它下载下来,转换为pem格式:
openssl x509 -in ca.crt -out ca.pem
以hash方式重命名文件(Android 系统要求)
openssl x509 -subject_hash_old -in ca.pem |head -1
得到证书的 hash 之后将证书 ca.pem 重命名为 557de9dd.0 放入模块的 system\etc\security\cacerts 文件夹,再把模块打包即可
模块的其他信息可在 module.prop 修改
如果是你自己的证书也可以通过此方法算出 hash 进行替换
Changelog
20200510
- 将 iptables 配置从
post-fs-data.sh移动到service.sh - 去除无用配置
参考
https://github.com/nondanee/UnblockNeteaseMusic https://github.com/Flysky12138/UnblockNeteaseMusic-Android
还是加个提纲吧 (有详细内容的话最好),空 issue 我万一忍不住就给关了 😀
还是加个提纲吧 (有详细内容的话最好),空 issue 我万一忍不住就给关了
明天改!😁
- 不要 在 post-fs 写 iptables 规则,移至 late_start(after boot completed)
- 不要给 Android 安装证书,请优先考虑使用 api 24- 客户端
- 国内远端服务器很贵,请了解 Nroxy,感谢作者
对于 Magisk 模块不是很熟悉,有很多不完善的地方还是需要各位大佬帮帮忙😄
建议服务器地址及端口配置通过环境变量定位到/sdcard/android/xx.txt,有利于修改参数配置。
且不建议把iptables配置写在post-fs-data.sh
@Wittoy 避免调用存储读写,配置还是写进模块
主要是有些人连修改模块配置都不会(逃
前言
部分内容在 GitHub 上格式出错,完整版在这里
这次使用的是服务端部署 UnblockNeteaseMusic + 本地 iptables 转发流量的实现方法。 原理上来讲是可以做到本地部署的,这样的话可以做到无成本,因为空余时间没那么多,就没去研究。 具体可以参考 https://github.com/Flysky12138/UnblockNeteaseMusic-Android 项目。
准备
- 一台位于大陆的服务器(必须是国内的,因为很多歌曲都只是买了大陆版权)
其实国外的服务器也可以,UnblockNeteaseMusic 提供了使用上游代理的方法,具体请查阅官方食用指南。
- 一台已 root 并安装了 Magisk 的手机
- 将网易云音乐移出 Magisk Hide 名单(未设置请忽略)
如果网易云音乐客户端在 Magisk Hide 名单内会导致证书不生效
服务端部署 UnblockNeteaseMusic
这个应该不用多说了,https://github.com/nondanee/UnblockNeteaseMusic 官方搭建方法已经写的很明白了,不过需要注意的是必须开启 HTTPS 并导入证书(接下来会讲到),否则会导致网易云音乐客户端个人页面和登录无法正常使用
Magisk 模块编写
这个的话我已经写好了,改一下配置即可 模块模板下载链接:https://rushb.lanzous.com/icgsqkh 密码:
6e01修改 iptables 脚本
编辑
post-fs-data.sh文件http=127.0.0.1:8080 # 这里修改成你的服务器地址:UnblockNeteaseMusic http 端口 https=127.0.0.1:8081 # 这里修改成你的服务器地址:UnblockNeteaseMusic https 端口 re=$(grep -m1 -i "com.netease.cloudmusic" /data/system/packages.list | cut -d' ' -f2) iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner $re -m tcp --dport 80 -j DNAT --to-destination $http iptables -t nat -A OUTPUT -p tcp -m owner --uid-owner $re -m tcp --dport 443 -j DNAT --to-destination $https修改证书
我们知道,如果应用的 Target API 在 24 以上的话,应用就只会信任系统证书而不会信任用户证书,而刚好我们是 Magisk 模块,就可以顺便把系统证书也写进去 打开文件夹
system\etc\security\cacerts我们以 UnblockNeteaseMusic 证书为例,他的证书为 ca.crt 我们把它下载下来,转换为pem格式:openssl x509 -in ca.crt -out ca.pem以hash方式重命名文件(Android 系统要求)
openssl x509 -subject_hash_old -in ca.pem |head -1得到证书的 hash 之后将证书
ca.pem重命名为557de9dd.0放入模块的system\etc\security\cacerts文件夹,再把模块打包即可 模块的其他信息可在module.prop修改如果是你自己的证书也可以通过此方法算出 hash 进行替换
Changelog
20200510
- 将 iptables 配置从
post-fs-data.sh移动到service.sh- 去除无用配置
参考
https://github.com/nondanee/UnblockNeteaseMusic https://github.com/Flysky12138/UnblockNeteaseMusic-Android
服务器地址无法使用域名 iptables v1.8.7 (legacy): Bad IP address "xxxx.xxx"