logo头像

星星給予仰望者光芒

iOS lldb + debugserver

本文于 921 天之前發表,文章内容可能已經過時。

  iOS lldb + debugserver 動態調適

前言

關於 iOS 動態調適有許多方式,這邊介紹一種比較容易的方法,
通過 MacOS 中的 Xcode 自帶的 lldb 與 debugserver 來操作,可以比較便捷的使用,其中也能學習到 lldb 相關的指令,使用於日後正向開發操作上。



在一般開發,使用 Xcode build 至 iphone(實體機) 中,會在手機上創建一個 debugserver,已進行動態調適 (debug),然而在動態分析上,能通過越獄權限的提升,來自主構建 debugserver,依附至欲分析之app上,達成動態分析與調適。

準備

事前準備

  • macOS 10.14+
  • Xcode 10.3
  • iphone iOS 12.4 (JB: unc0ver)
  • openSSH (安裝於 iphone 上)
  • usbmuxd (安裝於 mac 上)
  • iTerm2 (或者其他終端機)

由於 iOS 11 之前需求簽名與添加權限,有些許的難度,但在 iOS 12 之後,不需要再簽名與權限,所以統一使用12.4來操作。

操作

  1. 在 iTerm2 上,下指令 iproxy 1111 1111

  2. 在 iTerm2 上,開啟第二個分頁(command+T),SSH 連線至手機,
    其操作可以讓mac 與 iphone 在同一個 wifi 下,會更好操作。

    1
    ssh root@192.168.111.1 

    密碼統一預設為: alpine

  3. 在 ssh 分頁中下指令: ps -e,可以找出當前運行中的 app,比如我們要 attach 的進程編號為 693,我們可以輸入如下命令:debugserver *:1111 -a 693

    • Chimera 越獄:

      1
      /Developer/usr/bin/debugserver localhost:1234 -a 693
    • unc0ver 越獄:

      1
      debugserver localhost:1234 -a 693
    • 如果要用 debugserver 啓動 app,而不是附加到已經啓動的 app,則使用 debugserver localhost:1111 <app mach-O 路徑>,例如:

      1
      debugserver localhost:1234 /var/containers/Bundle/Application/107F3307-2900-4720-B9BA-0C7792D89DF2/APP_TO_DEBUG.app/APP_TO_DEBUG
  4. 在 iTerm2 上,開啟第第三個分頁,下指令: lldb,進入 lldb 界面,使用 process connect 指令連接至手機上。 用 WiFi 連接到 iOS 設備時:process connect connect://localhost:1234

調適

其餘奧秘,就留給大家研究嘗試一下吧~

錯誤

error:failed to get reply to handshake packet

  1. wget http://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.bz2
  2. tar xjfv usbmuxd-1.0.8.tar.bz2
  3. cd usbmuxd-1.0.8/python-clinet/
  4. python2 tcprelay.py -t 1111:1111
  5. lldb 連接時輸入 process connect connect://localhost:1111
備註
  • usbmuxd 退出: command + C
  • ssh 退出: exit
  • lldb 退出: exit