[iOS逆向實戰 之八]看懂mach-o(3)

來源:互聯網
上載者:User

標籤:

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

之前兩篇文章分別講了mach-o的header區和load command區中的segment,今天繼續講segment中的的setcion,一般在__TEXT和__DATA段中有section。這裡注意下命名規範,大寫代表segment,小寫是section,例如 __TEXT.__text,指的是__TEXT段的__text節。

先看section結構定義:

再看hopper中的__TEXT.__text 描述:

根據結構定義依次分析:

1.sectname  例子中是__text ,就是主程式碼

2.segname   該section所屬的 segment名,例子中是__TEXT

3.addr  該section在記憶體的啟始位置,例子中值是0xb268,跳轉到該位置看下,hopper的注釋也非常好,看:

4.size 該section的大小

5.offset  該section的檔案位移,根據例子中上下文,檔案開始於0x4000位置,offset大小是0x7268,這樣就得出絕對位置是0x4000+0x7268,和之前addr的值是一樣。

6.align 位元組大小對齊

7. reloff  重定位入口的檔案位移

8.nreloc  需要重定位的入口數量

9.flags  包含section的type和attributes,具體看loader.h。

結構中的最後2項保留用。

 

以下是__TEXT段的section

__text  主程式碼

__stubs 和__stub_helper   用於動態連結程式庫的stub

__cstring    c語言字串

__const    const修飾的常量

__objc_methname    objc的方法名稱

__objc_methtype    objc方法類型

__objc_classname    objc類方法

 

以下是__DATA段的section

__objc_classlist    objc類列表

__objc_protolist    objc原型列表

__objc_imageinfo    objc鏡像資訊

__objc_const    objc常量

__objc_selfrefs    objc自引用(this)

__objc_protorefs    objc原型引用

__objc_superrefs    objc超類引用

__cfstring   使用Core Foundation字串

__bss   BSS

至此,一共3篇“看懂mach-o” ,讓我們瞭解mach-o的布局,最後看下hopper中分析出來的segment和section列表。

 

 

[iOS逆向實戰 之八]看懂mach-o(3)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.