iOS逆向----使用lldb除錯三方應用
阿新 • • 發佈:2018-12-21
安裝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。
- 獲取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
➜ ~
- 對debugserver進行瘦身
進入debugserver所在的目錄下執行下面的命令即可,-thin後方填寫你的測試機相應的ARM架構即可,iPhone 5以後的裝置都是arm64的架構,所以此處填的引數是arm64,如果你的是iPhone5及以下的老古董,那麼就是armv7s了。
lipo -thin arm64 debugserver -output debugserver
- 給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