你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 越獄開發那些事兒之五

iOS 越獄開發那些事兒之五

編輯:IOS開發綜合

LLDB + IDA 雙劍合璧

參考書籍:《IOS應用逆向工程 分析與實戰》(沙梓社,吳航)
參考書籍:《IOS應用逆向工程(第2版)》(沙梓社,吳航)

用debug server啟動或附加進程

debug server最常用的兩種場景,就是啟動和附加進程,命令也都很簡單,分別是:

A:debug server會啟動executable,並開啟port端口,等待LLDB接入:

debugserver -x backboard IP:port /path/to/executable

B:debug server會附加ProcessName,並開啟port端口,等待LLDB接入:

debugserver IP:port -a “ProgressName”

啟動LLDB接入進程

在終端輸入:

lldb

(lldb)process connect connect://IOSIP:1234

LLDB+IDA開始調試

(1)image list

用於列舉當前進程中所有模塊(image),使用命令如下:

(lldb) image list -o -f

第一列是序列號,第二列是模塊在虛擬內存中的起始地址因LSAR產生隨機偏移(簡稱ASLR偏移),第三列是模塊的全路徑,括號裡是偏移之後的起始地址.

偏移後模塊基地址 = 偏移前模塊基地址 + ASLR偏移

在IDA中,

偏移後符號基地址 = 偏移前符號基地址 + 符號所在模塊的ASLR偏移

偏移後指令基地址 = 偏移前指令基地址 + 指令所在模塊的ASLR偏移

要記住:偏移前基地址從IDA裡看,ASLR偏移從LLDB裡看,兩者相加就是偏移後基地址.

(2)breakpoint

用於設置斷點,一般用到的是:

b function

br s -a address

以及

br s -a ‘ASLRoffset+address’

前者在函數起始位置設置斷點,後兩者在地址處設置斷點

例:
1 用IDA查看偏移前基地址

第一條指令”push…”的偏移前基地址是0x17730

2 用LLDB查看ASLR

ASLR偏移是0xb5000

3設置並觸發斷點

(lldb) br s -a ‘0x17730 + 0xb5000’

程序停下來後用”c”命令繼續運行

禁用某個斷點的命令: (lldb) br dis 6

禁用所有斷點命令: (lldb) br dis

啟用所有斷點命令: (lldb) br en

啟用某個斷點命令: (lldb) br en 6

刪除所有斷點命令: (lldb) br del

刪除某個斷點命令: (lldb) br del 6

另一個常用命令,是指定在某個斷點得以觸發的時候,執行預先設置的指令:

(lldb) br com add 1

執行這條命令後,LLDB會要求我們設置一系列指令,以”DONE”結束

po [$r0 class]

p (char *)$r1

c

DONE

(4)next與stepi

用於執行下一條機器指令,區別是前者不進入函數體,後者進入函數體,簡寫ni ,si

(5)register write

用於給指定寄存器賦值,(lldb) register write r0 1

以上就是iOS 越獄開發那些事兒之五的全文介紹,希望對您學習和使用ios應用開發有所幫助.

【iOS 越獄開發那些事兒之五】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved