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