1. 程式人生 > >iOS逆向----使用lldb除錯三方應用

iOS逆向----使用lldb除錯三方應用

安裝usbmuxd

首先要確保安裝了usbmuxd,可以用homebrew安裝:

brew install usbmuxd

配置debugserver

在做iOS開發時,在Mac上輸入LLDB的命令就可以控制iOS端的App,是因為在我們iOS客戶端中有一個debugserver伺服器。debugserver專門用來連線Mac端的LLDB客戶端,接收LLDB所提供的命令,並且進行相應的執行。如果你的iOS裝置進行過真機除錯的話,裝置中就會被安裝上debugserver, 不過該debugserver只能用來除錯你自己的相關應用。如果想要除錯從AppStore中獲取的App的話,那麼我們需要對iOS裝置上的debugserver進行處理。該部分就是要處理我們的debugserver。

  1. 獲取debugserver
    首先我們得找到iOS裝置中debugserver,並將其拷貝到Mac上進行處理,下方就是位於/Developer/usr/bin目錄下的debugserver。此debugserver只支援除錯我們自己的App, 如果需要除錯其他人的App的話,需要對此debugserver進行處理,處理過程見下文。
iPhone:~ root# cd /
iPhone:/ root# ls
Applications/  Documents*  System/  bin/   cores/  [email protected]  mnt/      sbin/  usr/
Developer/     Library/    
[email protected]
boot/ dev/ lib/ private/ [email protected] [email protected] iPhone:/ root# cd Developer/usr/bin iPhone:/Developer/usr/bin root# ls DTDeviceArbitration* ScreenShotr* XcodeDeviceMonitor* axauditd* debugserver* iprofiler* xctest* iPhone:/Developer/usr/bin root#

新建終端,使用scp命令將debugserver拷貝到桌面:

➜  ~ scp -P 2222 [email protected]:/Developer/usr/bin/debugserver ~/Desktop
[email protected]'s password:
debugserver                             100%   13MB  10.8MB/s   00:01
➜  ~
  1. 對debugserver進行瘦身
    進入debugserver所在的目錄下執行下面的命令即可,-thin後方填寫你的測試機相應的ARM架構即可,iPhone 5以後的裝置都是arm64的架構,所以此處填的引數是arm64,如果你的是iPhone5及以下的老古董,那麼就是armv7s了。
lipo -thin arm64 debugserver -output debugserver
  1. 給debugserver新增task_for_pid許可權
    給debugserver新增task_for_pid許可權後,我們就可以使用LLDB除錯其他App了。此部分我們需要一個儲存配置資訊的xml檔案,該檔案的內容如下。你可以將下下方的文字進行拷貝,然後儲存成ent.xml即可。
* #####給debugserver新增task_for_pid許可權
將此段程式碼儲存為xml檔案,命名為ent.xml   

```Objective-C
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
      <key>com.apple.springboard.debugapplications</key>
      <true/>
      <key>get-task-allow</key>
      <true/>
      <key>task_for_pid-allow</key>
      <true/>
      <key>run-unsigned-code</key>
      <true/>
  </dict>
</plist>

在給debugserver符許可權時,我們需要使用到ldid命令,如果你的Mac上沒有安裝ldid命令,那麼請用brew進行install。執行下方的命令列就可以給我們的debugserver賦上task_for_pid許可權。需要注意的是-S與ent.xml檔名中是沒有空格的。

➜  Desktop brew install ldid
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/ldid-1.2.1.mojave.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring ldid-1.2.1.mojave.bottle.1.tar.gz