前言
最近 iOS 逆向莫名火了起來,從逆向課程到最近阿里的大神出了一本《iOS應(yīng)用逆向與安全》掌呜,看到圈子一直在刷著滓玖,按捺不住躁動的心想學(xué)習(xí),恰逢這幾天有機(jī)會拿到越獄設(shè)備機(jī)器质蕉,于是開始一次 iOS 逆向之旅呢撞。
準(zhǔn)備
越獄設(shè)備一臺(最好是9.0 - 9.1系統(tǒng),支持完美越獄饰剥,9.2-9.3.3也是可以重啟再越獄的)
MonkeyDev (用于重簽安裝 ipa)
Cycript (用于hook正在運行的進(jìn)程殊霞,能夠在運行時修改應(yīng)用的很多東西)
Clutch (用于砸殼,當(dāng)然還有其他工具)
開始砸殼
先確定你的設(shè)備跟電腦處于同一網(wǎng)段且打開 openssh 汰蓉,用 ssh 命令登錄到設(shè)備
ssh root@192.168.2.3
密碼一般是 alpine
將下載好的 Clutch 傳輸?shù)皆O(shè)備的 /usr/bin 下绷蹲, 在 Mac 中執(zhí)行
scp Clutch-2.0.4 root@192.168.2.3:/usr/bin
傳輸完成后到目錄下修改文件名把帶 "-2.xxx" 后面的去掉,在設(shè)備中執(zhí)行
cd /usr/bin
mv Clutch-2.0.4 Clutch
據(jù)說 Clutch 此工具使用比較簡單,但有時候好像有些問題祝钢,我所用的設(shè)備用這個沒砸出來比规,后來托了哥們的手機(jī)砸出來了,還有另外的dumpdecrypted工具拦英,使用方法自行 Google 蜒什,dumpdecrypted 需要 hook 到進(jìn)程,由于種種原因疤估,打不開我要砸殼的 App 灾常,至今未解,可能是設(shè)備問題铃拇?另外 Clutch 砸出來的是 ipa 后綴钞瀑,dumpdecrypted 砸出來 是 decrypted 后綴,可以多嘗試慷荔,下面說 Clutch 的用法雕什,剛才我們已經(jīng)把 Clutch 放入手機(jī)設(shè)備中,接著執(zhí)行
Clutch -i
可列出設(shè)備中的 App 信息:
下一步選擇你想砸的 App 显晶,可用序號也可用 Bundle ID 如:
Clutch -d 4 此命令等價于 Clutch -d com.tencent.xin
接著神奇的事情即將發(fā)生
到此砸殼成功核偿,并且會告訴你 ipa 的目錄往果,到目錄下將 ipa 包 scp 到 Mac 上即可蚣驼,也可以采用 itools pro 等工具將 ipa 包導(dǎo)出辣卒。
當(dāng)然也可能出現(xiàn)砸殼失敗的情況: (原因未知,可能是設(shè)備打不開 App 的問題)
很多人都是第三方軟件導(dǎo)出出現(xiàn)問題倦春,這里最簡單的方法就是用 scp 命令傳輸户敬,先 cd 到上邊給出的目錄,然后 mv 改一下這個這么長的命名睁本,不然的話轉(zhuǎn)義字符好像也會有點問題尿庐,這里 mv com.xxxxx.ipa wechat.ipa
scp 從遠(yuǎn)程傳到本地桌面命令 scp root@地址:包的全路徑 ~/Desktop
至此導(dǎo)包成功,順便講下我們用 scp 和 ssh 都是可以不用接USB到電腦的呢堰,只要保持手機(jī)設(shè)備和 Mac 在統(tǒng)一網(wǎng)段就可以了抄瑟,第三方軟件需要 USB 接上Mac 導(dǎo)包,scp 和 ssh 走的都是22號端口枉疼,ftp是21號端口皮假,telnet是23號端口,所以22合并了兩者可以登錄和做文件傳輸骂维,有興趣的朋友可以自行 Google ssh22號端口的由來惹资。
拿到 ipa 包之后借助某阿里某大神的工具 MonkeyDev 可以進(jìn)行重簽,工具的安裝使用方法就直接看 wiki 吧航闺,默認(rèn)集成了 Reveal 褪测、Cycript 猴誊、class-dump ,利用自己的開發(fā)者賬號重新編譯至真機(jī)即可調(diào)試侮措。
class-dump 導(dǎo)出頭文件
簡單導(dǎo)頭文件可直接用命令懈叹,先解壓 ipa 包,mkdir 創(chuàng)建一個文件夾分扎,執(zhí)行:
class-dump -H 你的app(注意是.app后綴) -o 文件夾
即可導(dǎo)出頭文件澄成,當(dāng)然用MonkeyDev編譯導(dǎo)出的亦可
Cycript報錯
Cycript 走的是 6666 號端口,到 Cycript 文件夾下 ./cycript -r 設(shè)備地址:6666
連接的時候可能會出現(xiàn)以下問題:
dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
Referenced from: /Users/Jveryl/Desktop/Crash/cycript_0/Cycript.lib/cycript-apl
Reason: image not found
原因是缺失 ruby 的庫畏吓,看了別的方法是關(guān)閉 SIP 之類的墨状,后面找到比較簡單的解決方法如下:
1.先安裝brew
2.用brew安裝ruby@2.0 brew install ruby@2.0
3.安裝成功后把/usr/local/Cellar/ruby@2.0/2.0.0-p648_2/lib/libruby.2.0.0.dylib拷貝到Cycript.lib目錄下再次執(zhí)行即可
Reveal 報升級
MonkeyDev 的 RevealServer.framework 版本好像比官方的低了,如果報錯說需要升級的話庵佣,到官網(wǎng)下載新版找到新的 RevealServer.framework 替換掉Mac系統(tǒng)中路徑 /opt/MonkeyDev 下的 framework 即可歉胶。
Xcode重簽名安裝到設(shè)備的時候安裝失敗
解決辦法: 直接
cmd+shift+k
clean一下重新編譯
后記
總算也是有機(jī)會接觸 iOS 逆向了汛兜,踩了不少坑巴粪,完全是站在巨人的肩膀上編程,據(jù)說今天 iOS 11.3.1 越獄 也開放了粥谬,大家可以試試肛根,感謝開源,感謝巨人們的貢獻(xiàn)漏策,此次的砸殼重簽安裝到此就結(jié)束啦派哲,有任何問題疑慮的朋友歡迎留言討論指正。