GDB來除錯IPHONE步驟

2021-07-03 13:54:49 字數 2143 閱讀 4242

iphone手機必須越獄:

安裝以下外掛程式是必需的:

>openssh,作為ssh服務端;

>gnu debugger(gdb除錯工具):在這個源中cydia.radare.org,版本為1708,低版本不支援ios4.3+。

>adv-cmds:ps命令可以檢視程序資訊;

>darwin cc tools:otools可以檢視可執行檔案的詳細資訊;

>link identity editor:ldid簽名;

用itools開通ssh埠22,用securecrt就可以登陸iphone了,預設使用者和密碼root alpine

熟悉gdb除錯:

記住以下常用命令就足夠了:

ps -ax:檢視當前所有程序

gdb -p pid:附加到目標程序

如果太長,可以用set height 10 來指定顯示範圍

info sh:這個可以檢視程式**在記憶體中的偏移位址

i mach-region 0 顯示基址

在手機var/root目錄建立.gdbinit檔案,方便一些巨集命令的使用

i mach-region 0 

display /i $pc | $cpsr.t     --顯示指令

define bbvm                  --基址

set $__bbvm=$arg0-(0x6c000-0x68000)

enddefine bb                 --下斷

b *($__bbvm+$arg0)

enddefine pp                  --列印出對應基址的位址

print /a ($arg0-$__bbvm)

enddefine writechar                --改寫記憶體char

set objc-non-blocking-mode off

set $_count=0

while ($_count<24)

set ($arg1+$_count)= *(unsigned char*)($arg0+$_count)

set $_count++

endend

writechar "jnrcpfiiwrwtl6rysvtwmg==" $r0+84

一些基本指令:

break:下斷點

display /i $pc | $cpsr.t:顯示要執行的下一句指令

disassemble  $pc $pc+10

continue(或c):繼續執行;

nexti(或ni):單步執行一條彙編指令(有些程式一執行就直接跳出函式)

po $rn(n為數字,列印暫存器儲存的物件,暫存器實際儲存的是物件的位址)

print $rn(列印暫存器中的值)

set $rn=***x(給暫存器賦值)

set $r5=[[[nsstring] alloc] initwithstring:@"******"]

(gdb) set 0x8048a51=0x0

(gdb) set *(unsigned int*)0x8048a54=0x55aa55aa

列印字串

def loadlua

set $uni = $r3

while (*$uni)

printf "%c", *($uni++)

endend

x /ubx **** 顯示記憶體位址

查暫存器

i r $r0 $r1 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12

檢視記憶體值

ldr r4, [r2, #0x20],就是關鍵的地方了。那麼如何看記憶體位址裡面的值呢?  i r 命令只能檢視暫存器的值,要看記憶體位址裡面的值需要用 x/uh 0x位址。這時候你可以看到r2暫存器的值為0x166410, +0x20= 0x166430. 注意這裡2個都是是16進製制的加法,不要弄錯了。那麼就用命令 x/uh 0x166430, 檢視到他的記憶體值為800,就是大包的錢。

設定暫存器值

set $r4=0,

監視斷點命令,watch *0x16d49c

set $x=0x95000

while(*++$x!=22975 && $x<0x1236000)

endp/x $x

gdb除錯步驟

gdb除錯 gdb除錯過程 1 程式經過預處理後,即進入編譯階段,進入編譯階段,首先宣告編譯 2 格式 gdb o test test.c g 3 進入編譯 gdb test 4 顯示需要編譯除錯的源程式 l list list filename 5 設定斷點 b break 行號 6 檢視設定的斷...

lldb除錯IPHONE步驟

參照了幾篇文章終於成功了,記錄一下 在win7下安裝vm11虛擬機器,安裝10.10版本下的是ios版,安裝xcode 6.1 入門篇之 iosopendev環境搭建 入門篇之 theos環境搭建 一 ios越獄開發 開發環境搭建 一步一步用debugserver lldb代替gdb進行動態除錯 d...

gcc編譯與gdb除錯簡要步驟

gcc編譯過程主要的4個階段 l 預處理階段,完成巨集定義和include檔案展開等工作 i l 根據編譯引數進行不同程度的優化,編譯成彙編 s.s l 用彙編器把彙編 進一步生成目標 o l 用聯結器把生成的目標 和系統或使用者提供的庫連線起來,生成可執行檔案 格式 l gcc e test.c ...