微信紅包一直都是一個重點娛樂項目,最近看到大家都在玩微信自動搶紅包,原來是有好心人把工具開源了,而且配有詳細解說,好奇之下也手癢來玩了一下。
因為在此之前我從未接觸過iOS開發,這說明自動搶紅包目前來看門檻還很低,所以感興趣的同學可以試著玩玩,過程中挺漲知識的,原理什麼的我大概明白了一點,就不班門弄斧了,純粹是娛樂。
准備工作
需要設備
iPhone一台(若已准備好未加密的微信ipa可跳過)
裝好Xcode8的mac一台
需要環境
安裝OpenSSH和Cycript
在越獄iPhone上的Lydia裡搜索OpenSSH和Cycript,然後進行安裝。OpenSSH成功安裝後22端口會開啟,同一局域網內可以ssh上去,默認root密碼alpine,請立即修改默認密碼。
>>>安裝Theos和ldid
>>>編譯WeChatRedEnvelop
make之前請修改WeChatRedEnvelop.plist裡的Bundles為你的新應用名字(就是後面簽名用的bundles值)。
>>>編譯安裝optool
如果git clone過程中出現權限問題,請自行修改submodule的config內容,或者添加ssh證書。
獲取未加密的微信ipa
在AppStore上面下載得到的應用都是經過加密的,可以執行文件上已經被加過一層殼,重簽包需要用未加密的應用。一般獲取未加密應用有兩種方式:
1.使用愛思助手下載
2.對越獄手機上應用進行砸殼
第二種用Clutch進行砸殼,但是Clutch暫時不支持watchOS 2,而微信包是多target的,使用Clutch砸殼的時候會出現如下提示:
com.tencent.xin contains watchOS 2 compatible application. It's not
possible to dump watchOS 2 apps with Clutch 2.0.4 at this moment.
生成出來的可執行文件就在Clutch目錄下,將其拷貝到手機上
成功之後在/private/var/mobile/Documents/Dumped/目錄裡可以得到解密後的ipa文件,改名為wx.ipa然後scp到桌面上備用。
修改未加密的微信ipa
准備依賴庫
用macOS自帶的otool工具進行依賴項檢查:
從越獄的iOS設備中把/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate等非系統自帶的庫scp處理,改名後放在WeChatRedEnvelop.dylib的同級目錄下,然後修改庫指向。
注入Tweak至二進制文件
解壓ipa文件,刪除會造成問題的watch,然後向wechat中注入Tweak。
打包並重簽名
打包 ipa 與重簽名可以直接使用圖形化工具ios-app-signer來完成。他可以自動加載本機的證書以及Provisioning Profile 文件,使用起來十分方便
點擊 start 後,指定保存路徑,打包成功後生成新的ipa。
安裝使用
重簽名打包的ipa可以通過愛思助手安裝,安裝成功後效果如下(請原諒我無恥地修改):
其他
微信對這種方法其實已經有所對策,主要把判斷秒搶和查詢bundleid,被查到一般都是直接封禁朋友圈和部分功能之類的,所以各位玩的時候盡量克制,所謂:“小撸怡情 大撸傷身 強撸…… ”
PS:本來想用dumpdecrypted砸殼,結果了解到dumpdecrypted只會砸你手機處理器對應的那個殼,fat binary 的其它部分仍然是有殼的,所以在這裡不好用。不過還是記錄一下折騰dumpdecrypted的過程。
下載dumpdecrypted源碼並編譯
編譯成功之後會得到一個dumpdecrypted.dylib文件,這就是我們等下砸殼所要用到的工具。將該工具用scp復制到越獄iOS設備上的/var/root/中。
獲取APP目錄信息
關閉越獄iOS設備上所有的應用,然後打開微信,用ps -e命令可以獲取微信的APP目錄地址,如圖所示,有/var/mobile/Containers/Bundle/Application/字樣的結果就是微信可執行文件的全路徑,記錄下來(設該值為path1),待會兒要用。
獲取Documents目錄信息
用Cycript找出微信的Documents目錄路徑,如圖所示有/var/mobile/Containers/Data/Application/字樣的結果就是微信的Documents目錄全路徑,記錄下來(設該值為path2),待會兒也要用。
將dumpdecrypted移動到微信的Documents目錄下,然後用下列命令開始砸殼{path1}和{path2}請替換成前面兩步得到的路徑:
效果如圖:
當前目錄下會生成WeChat.decrypted,即砸殼後的未加密文件,請將該文件scp到電腦上備用。