越獄可以使用 Tweak,是因為越獄后默認(rèn)有mobilesubstrate 這個庫废士,它主要是能在程序運(yùn)行時能動態(tài)加載我們自己的動態(tài)庫叫潦。但非越獄機(jī)沒有這個庫,所以需要直接將這個庫打包進(jìn) ipa中來使用這個庫的一些API實現(xiàn)注入過程湃密。雖然是可以安裝在非越獄機(jī)器上诅挑,但制作過程需要有越獄手機(jī)。
獲取砸殼應(yīng)用
自己砸
工具:
dumpdecrypted 或者 clutch工具 本文需要砸殼之后的ipa文件所以只能用clutch
環(huán)境:
只有越獄才能砸殼
dumpdecrypted砸(原理是讓app預(yù)先加載一個解密的dumpdecrypted.dylib泛源,然后在程序運(yùn)行后拔妥,將代碼動態(tài)解密,最后在內(nèi)存中dump出來整個程序达箍。通過dumpdecrypted得到的可執(zhí)行文件其實不是完全解密過的没龙,機(jī)器是arm64的話就只能解密arm64那部分。可嘗試命令 lipo -thin arm64 .decrypted -o -arm64.decrypted可獲得純凈的可執(zhí)行文件硬纤。)
1. 越獄的iPhone
2. 進(jìn)入Cydia解滓,搜索并安裝OpenSSH、Cycript筝家、iFile(調(diào)試程序時可以方便地查看日志文件)這三款軟件
3. 電腦上用iTunes上下載一個最新的微信,連上iPhone洼裤,用iTunes裝上剛剛下載的微信應(yīng)用
4. Mac終端,用ssh進(jìn)入連上的iPhone(確保iPhone和Mac在同一個網(wǎng)段溪王,筆者iPhone的IP地址為192.168.8.54)腮鞍。OpenSSH的root密碼默認(rèn)為alpine。 如: ssh root@172.17.10.83
5. 手機(jī)打開iFile 后在終端一步步找到WeChat所在位置并保持微信打開(也可以用 ps -e 來查看當(dāng)前進(jìn)程進(jìn)行查找):cd /var/mobile/Containers/Bundle/Application/5A3F8B13-FF94-43A8-B02D-1580E38D63D0/WeChat.app/
6. 之后 cycript -p WeChat (cycript -p 查看附加進(jìn)程的)等待出現(xiàn) cy# 后在之后輸入 NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] 則可以獲取到輸出地址保留好 如:@"/var/mobile/Containers/Data/Application/C599E377-2B62-41B6-87A7-FBC6F19ECDD6/Documents"
7. 下載dumpdecrypted源碼莹菱,再:cd /Users/ucsapp/Downloads/dumpdecrypted-master 中后再使用 make 命令在該目錄下生成一個 dumpdecrypted.dylib文件
8. 拷貝該動態(tài)庫到iPhone對應(yīng)的WeChat的Documents目錄下 scp拷貝時并輸入ssh的密碼alpine(命令scp 源文件路徑 目標(biāo)文件路徑)如:scp ./dumpdecrypted.dylib root@172.17.10.83:/var/mobile/Containers/Data/Application/C599E377-2B62-41B6-87A7-FBC6F19ECDD6/Documents
9. 開始對AppStore下載的微信應(yīng)用進(jìn)行砸殼,注意檢查下當(dāng)前Mac是否連接到了手機(jī),先ssh到WeChat的dumpdecrypted.dylib所在的document目錄:/var/mobile/Containers/Data/Application/xxxxxxx/Documents下移国,再 (命令格式:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib 需砸殼文件WeChat.app/WeChat路徑)如:DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/5A3F8B13-FF94-43A8-B02D-1580E38D63D0/WeChat.app/WeChat 之后會生成一個WeChat.decrypted文件在dumpdecrypted.dylib的同級目錄下這就是砸殼的應(yīng)用。
10. 電腦新建一個terminal道伟,從手機(jī)拷貝該砸殼文件到電腦桌面 scp root@172.17.10.83:/var/mobile/Containers/Data/Application/3D3BD063-A779-4FAD-B4C4-6E674B8F2135/Documents/WeChat.decrypted /Users/yourcomputer/Desktop/
11. 注意:classdump出頭文件--- class-dump -H WeChat.decrypted --arch armv7 -o /Users/xxx/Desktop/xxx/Headers
Clutch砸 編譯Clutch后將執(zhí)行文件拷貝到越獄手機(jī)中,再ssh進(jìn)入手機(jī)迹缀,列出當(dāng)前安裝應(yīng)用,并選擇比如騰訊的某個應(yīng)用對應(yīng)的包名砸殼蜜徽。
clutch 會將砸過的 ipa 文件放到了 /private/var/mobile/Documents/Dumped/ 目錄下,接下來可以將其改簡單名祝懂,再拷回電腦
1. 下載最新的Clutch https://github.com/KJCracks/Clutch/releases
2. cd Clutch
3. xcodebuild -project Clutch.xcodeproj -configuration Release ARCHS="armv7 armv7s arm64" build
4. scp Clutch/clutch root@<your.device.ip>:/usr/bin/
5. ssh root@<your.device.ip>
6. clutch -i
7. clutch -d com.tencent.xin(注意:可能因為越獄iOS9.1的4S上的微信130MB有點大而不成功,嘗試用clutch -b com.tencent.xin也不行 猜測可能是clutch對armv7的32bit的處理有誤導(dǎo)致失敗拘鞋,官Git上也出現(xiàn)類似問題但未找到相應(yīng)解決 6Plus越獄64位機(jī)沒問題)
8. mv /private/var/mobile/Documents/Dumped/com.tencent.xin-iOS7.0-\(Clutch-2.0.4\).ipa /private/var/mobile/Documents/Dumped/wechat.ipa
9. scp root@<your.device.ip>:/private/var/mobile/Documents/Dumped/wechat.ipa ~/Desktop
別人砸
請繞道去PP助手等下載吧
動態(tài)庫
下載動態(tài)庫后需要編譯嫂易,但直接編譯會報錯提示找不到theos環(huán)境等,需要先安裝好這些環(huán)境掐禁。
make編譯后會生成一個隱藏的.theos目錄,在其下找到該源碼的編譯動態(tài)庫文件并拷貝到和上面的砸殼應(yīng)用同目錄下颅和。
使用系統(tǒng)otool工具檢測該動態(tài)庫需要依賴的各個庫是否都已存在,看到有兩個是屬于需要自身動態(tài)庫要包含進(jìn)Library的傅事,
除了第一個外第二個(因為該庫非越獄環(huán)境下是沒有的需要從越獄手機(jī)下提取出來以備打包用,
路徑為:/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate峡扩。)
需要通過install_name_tool來修改這個動態(tài)庫的依賴路徑并再次查看發(fā)現(xiàn)已經(jīng)改為從該動態(tài)庫讀取這個依賴庫了而非非越獄下的手機(jī)環(huán)境了蹭越,
并用optool工具(下載要recursive因為該源碼中又包含了其它源碼,后需要編譯如果xcodebuild命令提示錯誤教届,嘗試換一個https://github.com/yuchuanfeng/optool作者的optool后還報錯直接用xcode來build不用終端)將缺失庫與動態(tài)庫一起打進(jìn)該動態(tài)庫包里响鹃。
之后將砸殼過的 ipa 文件解壓,然后將 libsubstrate.dylib 與 WeChatRedEnvelop.dylib 拷貝到解壓后的 WeChat.app 目錄下以便下一步install這個WeChatRedEnvelop.dylib案训。
1. git clone https://github.com/buginux/WeChatRedEnvelop.git
2. cd WeChatRedEnvelop
3. make
4. cp .theos/obj/debug/WeChatRedEnvelop.dylib ~/Desktop
5. otool -L WeChatRedEnvelop.dylib
6. install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib /Users/ucsapp/Desktop/AutoEnvelopUnJail/WeChatRedEnvelop.dylib
7. otool -L WeChatRedEnvelop.dylib
8. git clone --recursive https://github.com/alexzielenski/optool.git(搜索最新release版本或換其他作者的)
9. cd optool
10. xcodebuild -project optool.xcodeproj -configuration Release ARCHS="i386 x86_64" build (optool是源碼編譯后將同名product拷到AAAAA待用)
11. unzip wechat.ipa -d wechat(注意:解壓砸殼過的wechat.ipa, 解壓后得到一個包含Payload文件的文件夾买置,將optool和兩個動態(tài)庫及解壓后的WeChat.app這三個文件放在同一個文件夾AAAAA中)
12. cd ~/AAAAA
13. cp /AAAAA/libsubstrate.dylib /AAAAA/WeChatRedEnvelop.dylib /AAAAA/WeChat.app
14. /AAAAA/optool install -c load -p "@executable_path/WeChatRedEnvelop.dylib" -t WeChat.app/WeChat (會輸出表示成功:
Found thin header...
Inserting a LC_LOAD_DYLIB command for architecture: arm64
Successfully inserted a LC_LOAD_DYLIB command for arm64
Writing executable to WeChat.app/WeChat...)
依賴庫
打包重簽名
1. 刪除注入了動態(tài)庫的.app中的包文件里的Watch目錄,將含有iWatch工程先刪除不簽名
2. 將目標(biāo)設(shè)備的UUID加到即將要簽名的證書中并更新配置文件下載安裝到Mac
3. 下載應(yīng)用重簽工具并運(yùn)行該Mac程序 https://github.com/DanTheMan827/ios-app-signer
4. 選擇重簽的證書和配置文件及保存路徑后點擊開始
5. 用工具將ipa裝入設(shè)備檢測是否有了動態(tài)庫的相關(guān)改動
可能會有報錯無法是被object格式等錯誤 檢測好動態(tài)庫注入cp 和 optool install路徑 盡量放在同一文件夾下操作 暫時應(yīng)該就無其它錯誤了