你可能对聊天软件双开有着不小的需求〔比如小而美〕,又或是从朋友那了解到一些奇奇怪怪的 App,但是因为苹果的 App 机制,他们并不能直接让你安装在设备上使用。
所以了解的多的朋友会看到一些熟悉的名词:XX 签,企业证书,开发者证书,AltStore 之类的。这里要再提及一下 AltStore 的原理:
这些软件都是通过苹果为开发者准备的「自签证书」实现的,为的就是方便开发者在 App 没上架前,在自己的设备上开发。AltStore 通过在局域网内运行起来一个服务器,模拟一台 Mac 去完成证书的申请和签名,最后将签名的软件发送到手机上安装。
不过这么搞起来还是不太方便:
- 开发者自签证书只有 7 天有效期,时间一过你的 App 就运行不了了。
- 你只能在运行了 AltStore 服务器的局域网内安装与重新签名软件。
第一个问题好解决,时间不够次数凑,快到 7 天了重新签名就是。第二个呢?那本文就要介绍由开源社区驱动的 Altstore 分支SideStore。
它通过配合 WireGuard,来欺骗系统,让他以为现在正在安装的软件包是局域网内来的,并且 SideStore 通过HTTP
协议开发了签名服务端。这样,便可在任何地点去完成签名。
安装 SideStore
SideStore 官方临时还没有开发Windows
版本的安装服务器,所以此部分会分别写下来。
开启开发者模式
如果你的手机系统版本更新到了iOS16.0,那么你需要在系统中打开开发者模式
。
开启路径是设置 App
隐私与安全性
开发者模式
你会被要求重启设备,重启之后会要求输入一次密码,这样就完成了开启。
在 Mac 上安装
访问SideServer-Macos 项目,在Releases
中下载最新版本,然后打开。
SideServer 会运行在状态栏,和 AltStore 的安装方式一样,将你需要安装的设备连接到 Mac,然后点击 SideServer 图标
选择 Install SideStore……
然后选择你的设备名即可。
你会被要求使用一个Apple ID
,在这一步里,使用你设备上的登陆了的账户就行,如果你有已知的开发者账户那会更好。
在 Windows 上安装
目前SideServer-Windows
项目还没有开发出第一个 Release,但是我们可以通过AltServer
来安装SideStore
。
SideStore 的.ipa
可以从SideStore 项目下载。
根据目前的教程描述,你的电脑上需要安装iCloud
和iTunes
访问AltStore,然后下载 Windows 版本客户端并运行。连接你的设备,按住Shift
并单击 Altserver 的图标,选择Sideload.ipa
,然后选择SideStore的.ipa
。
图片来源:https://www.feng.com/post/13660328
在设备上信任
稍等一会你会在设备上看到SideStore
的图标,尝试打开它,如果提示未信任之类的信息,请前往设置 App
通用
设备管理
然后选择你刚刚登陆的Apple ID
,然后信任它。
如果你开启了开发者模式并在刚才使用设备上已登陆的账户来安装 SideStore,你可能无需操作此步骤。
软件长得和 AltStore 差不多,换了个颜色。
搭建 Anisette 服务
先别急着在 SideStore 里面登陆,Anisette
是用来为 SideStore 提供签名软件功能的部分,使用D 语言编写〔你就把它当作 Java 和 C++的混血就行〕,怎么运行我们不用管,直接使用官方提供的 Docker 镜像来完成部署即可。
镜像名:dadoum/anisette-server
,Anisette 项目地址。
官方提供的docker run
命令:docker run -d -v lib_cache:/opt/lib/ --restart=always -p 6969:6969 --name anisette dadoum/anisette-server:latest
如果你需要设置义部署,解读命令可知,Anisette 需要提供一个目录映射到容器/opt/lib/
,并且转发6969
端口出来,你可以根据自己的实际需要来更改部分。比如lib_cache
可以修改为一个路径而非存储卷。
运行之后当你看到日志里面出现了这些:
Archive: applemusic.apk
inflating: lib/x86_64/libCoreADI.so
inflating: lib/x86_64/libstoreservicescore.so
Machine requires provisioning... done !
就代表成功运行起来了,用浏览器访问开放出来的6969
端口,应该返回类似内容:
{"X-Apple-I-Client-Time":"时间","X-Apple-I-MD":"xxx","X-Apple-I-MD-LU":"xxx","X-Apple-I-MD-M":"xxx","X-Apple-I-MD-RINFO":"50660608","X-Apple-I-SRL-NO":"0","X-Apple-I-TimeZone":"UTC","X-Apple-Locale":"en_US","X-MMe-Client-Info":"<MacBookPro17,1> <macOS;12.2.1;21D62> <com.apple.AuthKit/1 (com.apple.dt.Xcode/3594.4.19)>","X-Mme-Device-Id":"xxx"}
没有可以运行 Docker 的设备怎么办
官方考虑到了这个情况,所以官方文档中提到了使用Render服务来运行的方法,你可以在安装文档中了解详细。
不过使用同类支持运行 Docker 容器的服务也能安装,比如Heroku
,不过现在不免费了。你应该可以在网上搜到不少提供类似服务的产品。
家用电脑也可以
也许你家里有软路由之类的东西,反正能运行 Docker 就行,不难看出,这个 Anisette 通过HTTP
协议来完成交互,意味着你可以通过Cloudflare ZeroTrust Tunnel
之类的产品,将 http 服务器放到公网上。
提一嘴这个想法,本文不会记录操作。
修改 SideStore 里的 Anisette Server
搭建好 Anisette 服务后,打开设置 App
SideStore
关闭Use preferred servers
然后在Anisette URL
里面输入你刚刚搭建好的地址。
如你在图片里面看到的,我使用反向代理来为 Anisette 服务添加了 HTTPS,这样输入的时候也可以省掉端口。
安装 WireGuard
此步骤需要一个非国区的 AppleID 完成,直接在 App Store 里面下载就行,当然,通过AltStore
先安装一个也不是不可以……
然后下载提供的WireGuard 配置文件,如果链接失效,也可以试试直接新建一个SideStore.conf
文件,然后写入如下内容:
[Interface]
PrivateKey = AIIeeUDvk3NeAFJ9BWCQvPJize/9WZibMnGJ/0rt5k4=
Address = 10.7.0.10/24
[Peer]
PublicKey = kHDoekeYhBvfW9a9UQ+UCmpbG423eejTjcjW+DT+JF0=
AllowedIPs = 10.7.0.1/32
Endpoint = 127.0.0.1:51820
PersistentKeepalive = 25
然后启动!
安装一个 App 试试看
打开 SideStore,在Settings
登陆你的 Apple ID,如果你的 Anisette 服务器工作正常,那么你会正常登陆。
然后来到Browse
,找一个软件下载试试,我看中了Flappy Bird
如果你之前的步骤都没问题,那么这个Flappy Bird
不久将出现在你的主屏幕上,并且可以正常打开游玩。
安装 IPA
安装的过程很简单,在My Apps
里,左上角的+
加号,然后选择保存在手机里面的 App 即可。
如果你是相关软件开发者,可以参考SideStore URL 定义来方便你的用户安装。
注意事项
- 安装完成后记得断开
WireGuard
的连接。 - 如果你是免费开发者账户〔没有向果子贡献过 688〕每个账户只能同时激活三个 App
- 如果你是免费账户,那么每 7 天就需要重新签名,记得打开
Settings
里面的Background Refresh
,如果在 7 天内你没有更新SideStore
的签名,那么你需要重复安装 SideStore
章节。 - 尽量避免不搭建私人的 Anisette 服务,公共的服务器就目前来说,因为模拟的设备固定,苹果会看到一台设备同时登陆了很多 Apple ID,这样会导致你的账号也一起被一锅端。
- 避免安装未知来源的第三方 App,虽然有沙箱机制保护,但是就像
unc0ver
越狱一样,一个 App 就能拿到系统最高权限。