[iOS逆向實戰 之四]建立objc對象

來源:互聯網
上載者:User

標籤:

個人原創,轉帖請註明來源:cnblogs.com/jailbreaker

objc是完全物件導向的語言,所以逆向的重點就是逆向類,這篇文章通過ida的神奇的f5功能,來逆向某個對象的建立。

我們直接看ida中的main方法的逆向出來的arm代碼:

基本上看不出所以然,我們使用ida的f5分析得出c文法的虛擬碼如下:

提一下,我在源碼中,把自動記憶體管理ARC關掉了,為的是讓代碼更整潔。

在 8,9行都看到objc_msgSend,這個objc_msgSend其實是編譯器產生的程式碼,在源碼中沒有的,objc調用執行個體方法其實是動態通過訊息傳遞,只有在runtime的時候才能確定到底給哪個method去處理,也就是說編譯期間根本無法確定函數地址。

objc_msgSend函數至少包括2個參數,第一個參數類型是id,也就是範型class,可以傳遞任何class;第2個參數類型是SEL,selector,暫時可理解method的字面聲明,後面的文章裡會詳細講到selector。從第3個開始後面的參數就是SEL所指method需要的具體參數,本例中都只有2個參數。

最後看一下main 的源碼:

[iOS逆向實戰 之四]建立objc對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.