運行時工具基本原理

IOS逆向工具大全里 總結(jié)了四種運行時工具:cycript、InspectiveC、introspy、Snoop-it。這幾種工具功能大體相同(包含與被包含的關(guān)系)。

這些基本原理都是源自于ios的runtime特性,也稱為運行時特性。

本文首先科普ios的runtime特性。

何為運行時呢。普通的語言,如C語言,一旦經(jīng)過編譯,則馬上轉(zhuǎn)換成可目標(biāo)語言(匯編語言或機(jī)器語言),比如此時想要調(diào)用某個函數(shù),則實際在內(nèi)存中

就調(diào)用了某個函數(shù)。

然而OC語言卻不是這樣:OC語言除了編譯器之外,還多了個運行時系統(tǒng),經(jīng)過編譯之后,此時的函數(shù)在內(nèi)存里并沒有實際的地址,也即是此時無法調(diào)用該

函數(shù),而只有等到實際運行的時候,這個函數(shù)或者類才在內(nèi)存中實例化,被調(diào)用。

也正是因為如此,app每次運行的時候?qū)嶋H在內(nèi)存中產(chǎn)生的地址都是不同的,這就給反匯編的代碼閱讀增加了困難,這個又稱之為ios的app的ASLR特性。在

IOS逆向工具大全里有一種removePIE的工具,可以增加匯編代碼的可讀性,詳見http://www.cocoachina.com/industry/20140310/7940.html。

這個就稱之為運行時機(jī)制。

OC語言在運行的時候都會被轉(zhuǎn)換成runtime語言,蘋果本身對runtime是完全開源的,換言之,蘋果是允許去窺探已有app的內(nèi)部結(jié)構(gòu)的。通過runtime機(jī)制,

完全可以實現(xiàn)在app運行的時候,了解app實現(xiàn)的內(nèi)部結(jié)構(gòu):某個界面的組成,某個類有什么屬性方法,runtime甚至允許改變已有類的屬性方法值,亦可以增加

一個類,這就使得hook成為可能。

然后依次介紹每個工具的各自特性。

1:cycript

關(guān)于cycript的介紹在Cycript 研發(fā)_陳旦中已經(jīng)有了很詳細(xì)的介紹。但是cyript還有另外一種特性:cyript允許OC代碼和JS代碼混合編寫。

這種機(jī)制的原理源自于Objective-C與JavaScript交互。

2:Snoop-it:https://wizardforcel.gitbooks.io/ios-sec-wiki/content/chapter4/issue4-6.html

Snoop-it有兩個功能:運行時分析、對iOS應(yīng)用進(jìn)行黑盒安全評估。它有自己進(jìn)行操作的web界面,這是它優(yōu)于cycript的一個地方。

它還可用來分析網(wǎng)絡(luò)流量:https://wizardforcel.gitbooks.io/ios-sec-wiki/content/chapter6/issue6-1.html

Snoop-it官網(wǎng)地址:https://code.google.com/archive/p/snoop-it/.值得注意的是,這個工具作者并沒有放出源代碼。

3:InspectiveC

InspectiveC是一個基于OC的庫,它可以幫助查看類的詳細(xì)信息:

某個類的所有方法調(diào)用情況、某個類的某個方法的調(diào)用情況、某個類的實例對象的所有方法的調(diào)用情況、某個類的實例對象的某個方法的調(diào)用情況、某個方法簽名的調(diào)用情況

嚴(yán)格來說 它的功能很有限:http://iphonedevwiki.net/index.php/InspectiveC

4:introspy:http://wufawei.com/2013/11/ios-application-security-17/、http://www.blogfshare.com/ioss-introspy.html、http://ios.jobbole.com/58889/

Introspy由兩個模塊組成, 一個追蹤器,一個分析器。我們可以用追蹤器來對應(yīng)用執(zhí)行運行時分析。追蹤器會把信息保存到sqlite文件中以便后續(xù)用分析器分析,

追蹤器也可以把所有信息都輸出到設(shè)備的控制臺上。分析器可以用這個數(shù)據(jù)庫文件生成一個詳盡的HTML報告。

Introspy源碼:https://github.com/iSECPartners/Introspy-Analyzer

因此在本次調(diào)研中 只有1、4兩種工具,即cycript、introspy是開源的,而關(guān)于introspy的功能我有一個思路:通過動態(tài)運行工具對app進(jìn)行追蹤,可以對這些追蹤行為進(jìn)行

定義規(guī)則,而后,可以將這些追蹤信息輸出成靜態(tài)文本,類似introspy那樣,從而將動態(tài)分析轉(zhuǎn)換成靜態(tài)的文本分析。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,142評論 4 61
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 26,003評論 7 249
  • 差點忘了自己說好的一周一篇文章,可是自己好像寫不出什么東西,唉,說明自己不熱愛生活了…… 我所熱愛的是寫...
    蘇璞閱讀 640評論 0 1
  • 昨天晚上太困了。 01,10感恩張老師一步一步教我畫曼陀。有一個好開頭真不錯。 感恩老爸讓我來滄州。沒有感覺什么情...
    瀞好如琳閱讀 766評論 0 0
  • 打卡:每周讀一本書 OK 以前看過一篇報道,中國人每年人均讀書量不到兩本,猶太人每年人均讀書十五本… ...
    鑫鑫醬閱讀 359評論 0 0

友情鏈接更多精彩內(nèi)容