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 ...