iOS双开微信的跳转授权问题

背景

最近TrollStore用得挺多,给自己也弄了两个微信。但是在微信读书授权的时候,唤起的微信登录,是A微信,不是B微信。目标是希望能唤起B微信。

具体过程

如果你不希望看原理,那么就直接跳到总结

顺带说下,A微信为官方的Bundle ID:com.tencent.xin

B微信是自己定义的一个:com.tencent.xinVan

Bundle ID是iOS App,唯一的身份标识,所以不能重复

  1. 结合第一性原理,去了解了一下iOS在开中是如何唤起另一个App的。找到了CFBundleURLSchemes这个参数。这个参数是被唤起的App,向iOS提交自己的资源名。

如果写wechat,那么wechat://xxx这样的schemes,就会请求唤起微信。

  1. 由于主动唤起的代码肯定是无法修改的(最多找到常量的配置地方,去修改,但是那样就需要静态分析什么的,比较麻烦),所以就想着简单点,直接修改被唤起App的scheme。
  2. 其实就是A、B两个App,都是同样的scheme,所以想着,把A的scheme配置去掉。于是乎,用Fliza找到A的info.plist文件,去掉了CFBundleURLSchemes相关的配置。

这个时候,我用Safari去调用B中写的任何一个scheme,都是可以成功唤起B,而不是A的。但是微信阅读依旧唤起的是A,而不是B……这个就很尴尬。

考虑到是不是系统缓存的问题,但是搜了一圈没搜到,也不想重启。于是乎,就卸载了A,修改了包中的info.plist文件,重新打包签名安装。

OK,搞定。

总结

对于多开应用的情况下,如果你想要唤起B,而不是A。

那么做如下几步:

  1. 安装签名后的B;
  2. 修改A的info.plist文件:找到CFBundleURLSchemes,删掉其中的数组配置;
  3. 打包安装签名后的A;

关于iOS15越狱修改字体

很有幸,用的是iPhone11,还保留了iOS15.0.1系统。这个系统被陆续爆出漏洞:TrollStore免费安装其他IPA、MacDirtyCow漏洞可以临时修改内存映射,再到XinaA15Rootless越狱。感觉这手机真是买对了!

越狱

  1. 安装TrollStore
  2. 安装XinA15
  3. 打开后点击“open Jailbreak”按钮
是的,就这么简单

修改字体

修改系统字体

替换字体路径:/var/jb/Library/Fonts/

系统字体路径:/System/Library/Fonts

其实只要看着需要替换的字体,按照对应的路径,放到jb下即可。

部分App没有变化

没有变化的App,基本上都是有自己的设定字体,而不是用了系统默认。

Twitter

Chirp

从Google上搜索,和询问Discord上的小伙伴,得知Twitter用了自研的字体Chirp。遂打算进入Twitter.app目录,看看如何替换掉。

用Filza找了一下,找到如下:

/private/var/containers/Bundle/Application/256324AA-3DC7-41F4-B4AB-C78A55B87C33/Twitter.app

这个一串数字、英文的路径应该大家都不一样,只要沿着前面的路径,到这个目录下去搜索,就能看到。

很幸运,直接就找到了Chirp目录。

然后把里面的文件都替换下,大功告成。