Skip to content
Vincent's Notes
Go back

About WeChat Multi-opening on iOS

by Vincent Yang

正常情况下,在 iOS 设备上是不可能安装两个一模一样的 App。但是大部分人对于 微信 这款 App 都希望能够有 2 个及以上。工作和个人两个号,互不打扰。也能够及时的看到两个账号的消息,这是最完美的事情。

如果要做到以上的情况需要怎么做呢,大部分的选择可能是去某宝购买。某宝的价格基本上在 40-100 元不等,非常昂贵。平均下来,买一次最多使用 1-3 个月左右。淘宝售卖的是各种品牌的微信多开,但是按大类来分,无非就是两种,TestFlight(TF)企业证书。我不展开说这两个版本有什么区别,如果要我硬是选择一个更好的,我会选择 TF 版本。

既然某宝那么贵到底成本有多少呢,理论上除去开发成本,成本应该只有一个 Apple Developer 订阅的账号(688 元)的成本吧。因此,会有很多叫做 卡密网 的网站以非常低的价格售卖微信多开。基本上价格在 5-40 元之间,10-20 元居多。我曾经也买了很多次,最后总结的经验就是,基本上在三个月之内,作者必定会跑路。也就是意味着你三个月之后就用不了了,而且最恶心的事情是,作者会更换一个名字,三个月后重新开始售卖。典型的改名继续圈钱。

正常的流程,买的是一个激活码,然后第一次打开这个多开的时候,需要输入激活码进行验证。验证成功后可以正常使用。我想,是否有办法去绕过这个验证呢?

直接屏蔽验证接口

一般情况下,作者为了控制激活码的有效性,简单来说,如果你退款了,他可以立刻封禁你的激活码让你无法使用。所以他们一般会在每次打开 App 的时候,向服务器发起一个请求,如果服务端验证通过,会返回一些东西,例如“成功”等等。这种验证方式,其实还是有办法解决的,我们只要拿到正常的激活码,Response 的内容是什么,我们通过强大的 QuanX 或者 Surge 这类工具,开启 MITM,重写 Response 即可。在我测试的过程中,有遇到过直接 Reject 接口也可以绕过验证。

plaintext
DOMAIN-SUFFIX, xxx.com, Reject

当然有些开发者可能已经考虑到我们会这样做,于是他直接将验证的代码写在了本地。这类程序几乎是无法绕过的。

自己获取激活码

由于被薅过太多次羊毛,每次三个月就跑路。我就开始想,有没有办法薅作者的羊毛。初步的想法是搞明白作者的激活码的规律。但是这显然不靠谱,因为这些基本随机生成的,当然肯定有一定的规律,只是我们不是开发者本人,几乎是不可能猜到的。

既然找不到规律,就只能开始暴力破解。我发现大部分的多开的激活码都是 YW-XXXXXX,前面两个字母是产品名字的首字母,例如云微是 YW,云彩是 YC 等等。然后后面的这一串 XXXXXX 是随机的六个字母。也就是说激活码的可能性只存在于 AAAAAA-ZZZZZZ 之中。这个可能性非常大,但是交给我们的服务器去做,简直是小菜一碟。

plaintext
pool = threadpool.ThreadPool(99)
while True:
	code = create_code()
	tasks = threadpool.makeRequests(run, code)
	[pool.putRequest(req) for req in tasks]
	pool.wait()

我开始编写脚本,采用多线程的方案去尝试。效果非常好,几分钟出现很多验证通过的结果。服务器运行 24 小时,可以出现上千个激活码。于是我就有了用不完的激活码,成功薅到了作者的羊毛。


About WeChat Multi-opening on iOS
Published at
September 13, 2022
Markdown
tf-wechat.md
ShareShare this post on WhatsappShare this post on FacebookShare this post on XShare this post on TelegramShare this post on PinterestShare this post via email

Previous Post
Twitter using NFT avatar
Next Post
Summary of low prices for subscription services

Comments 0

Finished reading? Why not leave a word.