麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > iOS > 正文

iOS逆向教程之動態調試詳解

2019-10-21 18:41:01
字體:
來源:轉載
供稿:網友

前言

有時候想更了解別人App的調用流程,就需要在App運行的時候進行動態調試。動態調試指的是將程序運行起來,通過下斷點、打印等方式,查看參數、返回值、函數調用流程等。

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

Xcode的動態調試原理

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

Xcode 調試安裝到手機上的應用的原理:Xcode 通過 LLDB 調試器把調試指令發送到手機上的 debugserver, debugserver 再與相應的 APP 進行交互,達到調試的效果。

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

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

當 Xcode 識別到手機設備時,Xcode 會自動將 debugserver 安裝到手機上。

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

給debugserver賦予權限

默認情況下 /Developer/usr/bin/debugserver 缺少一定的權限,只能調試通過Xcode安裝的App,如果希望調試其它App,需要對 debugserver 重新簽名,簽上可以調試其它App的權限。

需要的兩個權限為:get-task-allow 和 task_for_pid-allow

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

通過 ldid 命令導出文件以前的簽名權限:

$ ldid -e debugserver > debugserver.entitlements

debugserver.entitlements 這個文件其實是個 plist 文件,在這個文件中加上上面提到的兩個權限后,再通過 ldid 命令對文件重新簽名。

$ ldid -Sdebugserver.entitlements debugserver

然后將已經簽好權限的 debugserver 放到 /usr/bin 目錄,便于找到 debugserver 指令。

debugserver附加到某個APP進程

$ debugserver *:端口號 -a 進程
  • *:端口號:使用iPhone的某個端口啟動debugserver服務(不是保留端口)
  • -a進程:輸入APP的進程信息(進程ID或者進程名稱)

Mac遠程連接iPhone上的debugserver服務

啟動LLDB:

// 在終端輸入$ lldb

連接debugserver服務

(lldb) process connect connect://手機IP地址:debugserver服務端口號

使用LLDB的c命令讓程序先繼續運行

(lldb) c

到此,就可以遠程調試別人的App了。

常用的LLDB指令

給ViewController的test方法設置斷點

breakpoint set -n "-[ViewController test]"

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

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

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

ASLR

獲取 ASLR 的偏移量:

image list -o -f

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

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

breakpoint set -o 0x010101+offset

到此就給該方法添加了斷點,之后當程序調用該方法的時候,會停在該斷點出。

結語

練習 lldb 的各種指令時,推薦先在 Xcode 上練習各種用法,因為會有提示和直觀的輸出結果,更容易我們理解。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲成人免费视频在线 | 欧美性精品videofree | 激情久久精品 | 亚洲精品永久视频 | 黄色网址免费进入 | 免费观看黄色一级视频 | 免费观看国产精品视频 | 国产视频精品在线 | 免费久久久久 | 性盈盈盈影院 | 久久91久久久久麻豆精品 | 99在线精品视频免费观看20 | 欧美a区 | 久久久久电影网站 | 一级成人毛片 | 国产福利视频 | 精品一二三区视频 | 国产宾馆3p国语对白 | 久久国产91 | 欧美国产精品一区二区 | 欧美成人一区二区三区电影 | av成人在线免费观看 | 做爰xxxⅹ性护士hd在线 | 嗯~啊~弄嗯~啊h高潮视频 | 视频一区二区视频 | 一区二区免费看 | 国产91精品欧美 | 久久不射电影 | 久久不射电影网 | 国产精品视频一区二区三区四 | 国产日韩大片 | 亚州精品天堂中文字幕 | 看av网址 | xxxx69hd一hd72| 91网站永久免费看 | 久国产 | 欧美一级片免费在线观看 | 久草在线看片 | 国产超碰人人做人人爱 | 久久精品国产99国产精品亚洲 | 古装三级在线观看 |