欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS逆向教程之動(dòng)態(tài)調(diào)試詳解

 更新時(shí)間:2018年06月07日 09:54:04   作者:Mr.Guo  
這篇文章主要給大家介紹了關(guān)于iOS逆向教程之動(dòng)態(tài)調(diào)試的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

有時(shí)候想更了解別人App的調(diào)用流程,就需要在App運(yùn)行的時(shí)候進(jìn)行動(dòng)態(tài)調(diào)試。動(dòng)態(tài)調(diào)試指的是將程序運(yùn)行起來,通過下斷點(diǎn)、打印等方式,查看參數(shù)、返回值、函數(shù)調(diào)用流程等。

下面話不多說了,來隨著小編一起看看詳細(xì)的介紹吧

Xcode的動(dòng)態(tài)調(diào)試原理

首先了解一下 Xcode 編譯和調(diào)試器的發(fā)展。Xcode 中的編譯器發(fā)展歷程:GCC -> LLVM,調(diào)試器的發(fā)展歷程:GDB -> LLDB 。

Xcode 調(diào)試安裝到手機(jī)上的應(yīng)用的原理:Xcode 通過 LLDB 調(diào)試器把調(diào)試指令發(fā)送到手機(jī)上的 debugserver, debugserver 再與相應(yīng)的 APP 進(jìn)行交互,達(dá)到調(diào)試的效果。

debugserver 一開始是存放在Mac的Xcode里面,路徑:

/Applications/Xcode.app/Contents/Developer/Platforms
/iPhoneOS.platform/DeviceSupport
/9.1/DeveloperDiskImage.dmg
/usr/bin/debugserver

當(dāng) Xcode 識(shí)別到手機(jī)設(shè)備時(shí),Xcode 會(huì)自動(dòng)將 debugserver 安裝到手機(jī)上。

Xcode 調(diào)試的局限性:一般情況下,只能調(diào)試通過 Xcode 安裝的APP,無法調(diào)試其它APP。

給debugserver賦予權(quán)限

默認(rèn)情況下 /Developer/usr/bin/debugserver 缺少一定的權(quán)限,只能調(diào)試通過Xcode安裝的App,如果希望調(diào)試其它App,需要對(duì) debugserver 重新簽名,簽上可以調(diào)試其它App的權(quán)限。

需要的兩個(gè)權(quán)限為:get-task-allow 和 task_for_pid-allow

iPhone上的 /Developer 目錄是只讀的,無法直接對(duì) /Developer/usr/bin/debugserver 文件簽名,需要先把 debugserver 復(fù)制到Mac。

通過 ldid 命令導(dǎo)出文件以前的簽名權(quán)限:

$ ldid -e debugserver > debugserver.entitlements

debugserver.entitlements 這個(gè)文件其實(shí)是個(gè) plist 文件,在這個(gè)文件中加上上面提到的兩個(gè)權(quán)限后,再通過 ldid 命令對(duì)文件重新簽名。

$ ldid -Sdebugserver.entitlements debugserver

然后將已經(jīng)簽好權(quán)限的 debugserver 放到 /usr/bin 目錄,便于找到 debugserver 指令。

debugserver附加到某個(gè)APP進(jìn)程

$ debugserver *:端口號(hào) -a 進(jìn)程
  • *:端口號(hào):使用iPhone的某個(gè)端口啟動(dòng)debugserver服務(wù)(不是保留端口)
  • -a進(jìn)程:輸入APP的進(jìn)程信息(進(jìn)程ID或者進(jìn)程名稱)

Mac遠(yuǎn)程連接iPhone上的debugserver服務(wù)

啟動(dòng)LLDB:

// 在終端輸入
$ lldb

連接debugserver服務(wù)

(lldb) process connect connect://手機(jī)IP地址:debugserver服務(wù)端口號(hào)

使用LLDB的c命令讓程序先繼續(xù)運(yùn)行

(lldb) c

到此,就可以遠(yuǎn)程調(diào)試別人的App了。

常用的LLDB指令

給ViewController的test方法設(shè)置斷點(diǎn)

breakpoint set -n "-[ViewController test]"

查看指令用戶使用 help 指令: help breakpoint 等。

打印線程的堆棧信息: thread backtrace

很多命令不在這里贅述,請(qǐng)參考:http://lldb.llvm.org/lldb-gdb.html

ASLR

獲取 ASLR 的偏移量:

image list -o -f

打印結(jié)果的第二列前面的地址就是我們需要的 ASLR 的偏移量offset。

假如我們想給某個(gè)類中的test方法添加斷點(diǎn),那么通過 Hooper 工具找到該方法的第一個(gè)內(nèi)存地址,假如為0x010101,然后地址加上我們得到的 ASLR 的偏移量就是該方法的實(shí)際地址。然后通過該地址給方法下斷點(diǎn)。

breakpoint set -o 0x010101+offset

到此就給該方法添加了斷點(diǎn),之后當(dāng)程序調(diào)用該方法的時(shí)候,會(huì)停在該斷點(diǎn)出。

結(jié)語

練習(xí) lldb 的各種指令時(shí),推薦先在 Xcode 上練習(xí)各種用法,因?yàn)闀?huì)有提示和直觀的輸出結(jié)果,更容易我們理解。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • iOS實(shí)現(xiàn)卡片堆疊效果

    iOS實(shí)現(xiàn)卡片堆疊效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)卡片堆疊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • iOS中判斷Emoji表情問題

    iOS中判斷Emoji表情問題

    在項(xiàng)目中遇到ios判斷emoji表情的問題,下面小編把我的解決方案分享到腳本之家平臺(tái)供大家參考
    2016-06-06
  • iOS CoreData 增刪改查詳解

    iOS CoreData 增刪改查詳解

    這篇文章主要為大家詳細(xì)介紹了iOS CoreData 增刪改查的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS屏幕適配開發(fā)實(shí)用技巧

    iOS屏幕適配開發(fā)實(shí)用技巧

    這篇文章主要為大家詳細(xì)介紹了iOS屏幕適配開發(fā)實(shí)用技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 詳解iOS的數(shù)據(jù)存儲(chǔ)

    詳解iOS的數(shù)據(jù)存儲(chǔ)

    本文介紹iOS中常用的應(yīng)用數(shù)據(jù)存儲(chǔ)方式及其詳細(xì)用法,內(nèi)容很全面和詳細(xì),對(duì)大家在IOS開發(fā)中很有幫助,下面一起來看看。
    2016-08-08
  • iOS中WKWebView白屏問題的分析與解決

    iOS中WKWebView白屏問題的分析與解決

    最近在工作中遇到了WKWebView白屏的問題,所以這篇文章主要給大家介紹了關(guān)于iOS中WKWebView白屏問題的分析與解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)同樣遇到這個(gè)問題的朋友具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • iOS 雷達(dá)效果實(shí)例詳解

    iOS 雷達(dá)效果實(shí)例詳解

    這篇文章主要介紹了iOS 雷達(dá)效果實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • iOS中長按調(diào)出菜單組件UIMenuController的使用實(shí)例

    iOS中長按調(diào)出菜單組件UIMenuController的使用實(shí)例

    UIMenuController即是用來制作我們平時(shí)對(duì)文本長按屏幕后顯示出的復(fù)制粘貼等選項(xiàng)菜單,下面就來詳細(xì)整理一下iOS中長按調(diào)出菜單組件UIMenuController的使用實(shí)例:
    2016-06-06
  • iOS開發(fā)驗(yàn)證判斷語句之正則表達(dá)式小結(jié)

    iOS開發(fā)驗(yàn)證判斷語句之正則表達(dá)式小結(jié)

    最近在公司接手重構(gòu)一個(gè)項(xiàng)目,發(fā)現(xiàn)之前的開發(fā)在驗(yàn)證格式這塊寫的太亂了,到處都有相關(guān)的驗(yàn)證代碼,所以就有了這篇文章,供自己收藏也分享給有需要的朋友們參考借鑒,下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12
  • iOS實(shí)現(xiàn)文件上傳功能

    iOS實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論