iOS app 的 ASLR

來源:互聯網
上載者:User

標籤:emma   二進位檔案   不能   sizeof   bsp   啟用   保護   sub   and   

       這兩天逆向一個程式,發現每次image list -o -f 之後,它的基地址都是0x00000,也就是位移地址是0。  想到這個應該是載入記憶體時有沒有啟用位移有關,於是找了下答案:aslr

       百度百科對ASLR的定義:

       aslr是一種針對緩衝區溢位的安全保護技術,通過對堆、棧、共用庫映射等線性區布局的隨機化,通過增加攻擊者預測目的地址的難度,防止攻擊者直接定位攻擊代碼位置,達到阻止溢出攻擊的目的的一種技術。   百度百科說的比較隱晦,用白話說,就是:ASLR (Address Space Layout Randomization),即地址空間隨機布局。ASLR特性是為了防禦攻擊對已經地址的攻擊才加入的,程式在運行時載入的地址都是隨機的,正因如此,所以我們在偵錯工具的時候下斷點要用程式的檔案位移加上載入到記憶體的隨機地址。

       在有ASLR特性的程式在Mach-o檔案頭都會有PIE的標識,用 otool -hv命令查看二進位,最後一列PIE標識:

tong:crack xxxxx$ otool -hv xxxxxMach header      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags   MH_MAGIC     ARM         V7  0x00     EXECUTE    38       4272   NOUNDEFS DYLDLINK TWOLEVEL BINDS_TO_WEAK PIE

 

再找了個沒有ASLR機制的二進位檔案:

tong:1401 xxxx$ otool -hv xxxxMach header      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags   MH_MAGIC     ARM         V7  0x00     EXECUTE    60       6036   NOUNDEFS DYLDLINK TWOLEVEL WEAK_DEFINES BINDS_TO_WEAK

 

網上也有些去掉PIE標識的軟體,另外還說到有些不完美越獄就是因為ASLR的原因,越獄後,每次重啟都需要重新越獄(原話就是“越獄”,可能就是指現在ios9.1以後的越獄,每次重啟後,都需要重新啟用。)

     那麼,我有個問題,如果沒有了ASLR,是不是每個程式都需要指定一個基地址?且不能衝突?否則,如果兩個程式基礎地址都是0,怎麼辦?還望高手告知

             

       

iOS app 的 ASLR

聯繫我們

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