注:原文---念茜的博客
MobileSubstrate可以幫助我們加載自己的動(dòng)態(tài)庫,于是開發(fā)者們謹(jǐn)慎的采取了對MobileSubstrate的檢索和防御措施。
那么,除了依靠MobileSubstrate幫忙注入dylib,還有別的攻擊入口嗎?
理理思路,條件、目的很明確:
1)必須在應(yīng)用程序啟動(dòng)之前,把dylib的環(huán)境變量配置好
2)dylib的位置必須能被應(yīng)用程序放問到
3)最后再啟動(dòng)應(yīng)用程序
啊哈,原汁原味,走bash!
在點(diǎn)擊應(yīng)用程序圖標(biāo)–>程序啟動(dòng)這個(gè)過程中,在我們看來程序是被動(dòng)執(zhí)行的。為了讓特定功能的腳本被執(zhí)行,我們可以把腳本改成應(yīng)用程序二進(jìn)制的名字偽裝成應(yīng)用程序,讓系統(tǒng)調(diào)用啟動(dòng)。在腳本中,配置好dylib,然后再手動(dòng)啟動(dòng)真的應(yīng)用程序,假裝什么也沒發(fā)生,揮一揮衣袖不帶走一片云彩~
將真的支付寶程序改名為oriPortal:
mv Portal oriPortal
將待執(zhí)行的腳本改名為支付寶
mv Portal.sh Portal
腳本代碼:
錯(cuò)誤信息如下:
在打開某個(gè)加密信息時(shí)出了錯(cuò)誤,大概猜一下應(yīng)該是類似加密簽名校驗(yàn)的步驟,但是我們無法去了解其中詳細(xì)的操作到底是什么樣的,沒關(guān)系,那么就把原始的可執(zhí)行文件環(huán)境全部給他造出來,因?yàn)闄z驗(yàn)文件屬性肯定不會帶著路徑信息的。
備份一份Portal.app目錄Portal_ori.app,修改腳本為
運(yùn)行支付寶app驗(yàn)證一下,
好消息是,在iOS6上,成功加載了動(dòng)態(tài)庫wq.dylib
壞消息是,在iOS7上,失敗了,錯(cuò)誤信息如下:
應(yīng)該是因?yàn)閕OS7的沙盒機(jī)制升了級,把我們這套小把戲攔在門外了……