你可能对聊天软件双开有着不小的需求(比如小而美),又或是从朋友那了解到一些奇奇怪怪的 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 就能拿到系统最高权限。