一、簡(jiǎn)介
我們Xcode中的lldb可以調(diào)試手機(jī)中的應(yīng)用趴荸,是因?yàn)槭謾C(jī)中的Debugsever開啟的相關(guān)服務(wù)儒溉,越獄環(huán)境中,我們只需要開啟Debugsever服務(wù)就可以利用lldb遠(yuǎn)程調(diào)試第三方應(yīng)用了发钝。
二顿涣、Debugsever文件在哪
我們第一次調(diào)試手機(jī)的時(shí)候,Xcode會(huì)把相關(guān)版本的Debugsever文件安裝到手機(jī)上酝豪,并且開啟Debugsever服務(wù)涛碑。
在/APPlication/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/
中可以看到對(duì)應(yīng)不同iOS系統(tǒng)版本的鏡像文件。
Debugsever鏡像文件
打開dmg文件孵淘,進(jìn)入usr/bin目錄可以看到debugserver蒲障。這就是Xcode安裝到真機(jī)中的文件。
debugserver文件
通過對(duì)比md5查看瘫证,會(huì)發(fā)現(xiàn)是相同的文件揉阎。
三、準(zhǔn)備工作
- 越獄手機(jī)
- 手機(jī)安裝openssh
- usb連接手機(jī)
四背捌、啟動(dòng)debugserver
1毙籽、iPhone中開啟debugserver服務(wù),并將debugserver依附到app中毡庆。
# 由于主機(jī)地址是當(dāng)前手機(jī)坑赡,主機(jī)地址可以使用*代替
# 自定義端口號(hào):?jiǎn)?dòng)server服務(wù),開放端口么抗,讓遠(yuǎn)程的LLDB通過sever調(diào)試進(jìn)程
# 應(yīng)用進(jìn)程:可以通過openssh連接手機(jī)后使用 'ps -a' 查看應(yīng)用進(jìn)程名稱
$debugserver 主機(jī)地址:端口號(hào) –a 應(yīng)用進(jìn)程
2毅否、Mac上啟動(dòng)LLDB連接iPhone,在Mac電腦上新建一個(gè)terminal窗口乖坠,啟動(dòng)lldb搀突。
# 這樣就啟動(dòng)lldb了
$lldb
3、連接debugserver
# 'process ':進(jìn)程的意思
# 'connect':鏈接的意思
# 'connect:手機(jī)IP:服務(wù)端口號(hào)' :lldb的鏈接手機(jī)協(xié)議寫法
# '手機(jī)IP':可以是localhost
# '服務(wù)端口號(hào)':也即是上面剛剛設(shè)置的端口號(hào)
(lldb)process connect connect:手機(jī)IP:服務(wù)端口號(hào)
4、退出lldb
# 退出時(shí)會(huì)提示是否殺掉進(jìn)程:輸入Y后仰迁,lldb將關(guān)閉應(yīng)用進(jìn)程甸昏。
(lldb)exit
5、使用lldb調(diào)試手機(jī)徐许,請(qǐng)翻頁(yè)??:iOS逆向之《LLDB》
五施蜜、注意:
- 鏈接手機(jī)應(yīng)用后可能會(huì)發(fā)現(xiàn)應(yīng)用卡住了,是因?yàn)閘ldb打了斷點(diǎn)雌隅,執(zhí)行
c
指令就可以讓手機(jī)活動(dòng)了翻默。 - 如果需要執(zhí)行Chisel、Cycript等lldb工具恰起,需要在lldb模式下輸入
process interrupt
才能是其生效 修械,如果集成了Chisel,可以試試pviews
指令检盼。
六肯污、總結(jié)
簡(jiǎn)單介紹了手動(dòng)lldb連接手機(jī)的連接方式,反手贊一個(gè)吧吨枉。