iOS_逆向_LLDB與debugserver

一丶介紹

“LLDB全稱為“Low Level Debugger”诺苹,是由蘋果出品银亲,內(nèi)置于Xcode中的動(dòng)態(tài)調(diào)試工具亭珍,不但通吃C命辖、C++、Objective-C袄友,還全盤支持OSX挖炬、iOS传泊,以及iOS模擬器雪情。

LLDB的功能可以概括為以下四點(diǎn):
·在指定的條件下啟動(dòng)程序遵岩;
·在指定的條件下停止程序;
·在程序停止的時(shí)候檢查程序內(nèi)部發(fā)生的事巡通;
·在程序停止的時(shí)候?qū)Τ绦蜻M(jìn)行改動(dòng)尘执,觀察程序的執(zhí)行過(guò)程有什么變化⊙缌梗”

“debugserver運(yùn)行在iOS上誊锭,顧名思義,它作為服務(wù)端弥锄,實(shí)際執(zhí)行LLDB(作為客戶端)傳過(guò)來(lái)的命令丧靡,再把執(zhí)行結(jié)果反饋給LLDB,顯示給用戶叉讥,即所謂的“遠(yuǎn)程調(diào)試”窘行。

在默認(rèn)情況下,iOS上并沒有安裝debugserver图仓,只有在設(shè)備連接過(guò)一次Xcode,
并在Window→Devices菜單中添加此設(shè)備后但绕,debugserver才會(huì)被Xcode安裝到iOS的“/Developer/usr/bin/”目錄下救崔。
Paste_Image.png

二丶debugserver

1.減肥

1副本.png

找到你手機(jī)對(duì)應(yīng)的ARM架構(gòu);

1.1“將未經(jīng)處理的debugserver從iOS拷貝到OSX中的“/Users/snakeninny/”目錄下,命令如下:

$scp root@iOSIP:/Developer/usr/bin/debugserver ~/debugserver

1.2減肥 armv7s == 你iPhone的架構(gòu)

$ lipo -thin armv7s ~/debugserver -output ~/debugserver

2.給debugserver添加task_for_pid權(quán)限

下載http://iosre.com/ent.xml 放到 ~/User/用戶名/

#方法一:
$/opt/theos/bin/ldid -Sent.xml debug server

#方法二:
$ codesign -s - --entitlements ent.plist -f 

3.將經(jīng)過(guò)處理的debugserver拷回iOS捏顺,并添加執(zhí)行權(quán)限

$scp ~/debugserver root@iOSIP:/usr/bin/debugserver
$ ssh root@iOSIP
$chmod +x /usr/bin/debugserver

4.用debugserver啟動(dòng)或附加進(jìn)程

啟動(dòng)executable六孵,并開啟port端口,等待來(lái)自IP的LLDB接入幅骄。

debugserver -x backboard IP:port /path/to/executable

附加ProcessName劫窒,并開啟port端口,等待來(lái)自IP的LLDB接入拆座。

debugserver IP:port -a "ProcessName"

例如:

FunMaker-5:~ root# debugserver -x backboard *:1234 /Applications/MobileSMS.app/MobileSMS  
debugserver-@(#)PROGRAM:debugserver  PROJECT:debugserver-320.2.89
 for armv7.
Listening to port 1234 for a connection from *...

上面的代碼會(huì)啟動(dòng)MobileSMS主巍,并開啟1234端口冠息,等待任意IP地址的LLDB接入。而:

“FunMaker-5:~ root# debugserver 192.168.1.6:1234 -a "MobileSMS"
debugserver-@(#)PROGRAM:debugserver  PROJECT:debugserver-320.2.89
 for armv7.
Attaching to process MobileNotes...
Listening to port 1234 for a connection from 192.168.1.6...

會(huì)附加MobileSMS孕索,并開啟1234端口逛艰,等待來(lái)自192.168.1.6的LLDB接入。

如果上面的命令在執(zhí)行時(shí)報(bào)錯(cuò)搞旭,如下:

FunMaker-5:~ root# debugserver *:1234 -a "MobileSMS"
dyld: Library not loaded: /Developer/Library/PrivateFrameworks/ARMDisassembler.framework/ARMDisassembler
  Referenced from: /usr/bin/debugserver
  Reason: image not found
Trace/BPT trap: 5

說(shuō)明iOS上的“/Developer/”目錄下缺少必要的調(diào)試數(shù)據(jù)散怖。這種情況一般是因?yàn)闆]有在Xcode的Window→Devices菜單中添加此設(shè)備,重新添加設(shè)備就可以解決問(wèn)題肄渗≌蚓欤”

摘錄來(lái)自: 沙梓社 吳航 著.iOS應(yīng)用逆向工程(第2版)

三丶LLDB

1.image list

(lldb)image list -o -f

列舉當(dāng)前進(jìn)程中的所有模塊(image)

2.breakpoint

設(shè)置斷點(diǎn)

breakpoint
b function
br s -a address
br s -a 'ASLROffset+address'

//例子:
函數(shù)的起始位置設(shè)置斷點(diǎn);
(lldb)b NSLog
在地址處設(shè)置斷點(diǎn)
(lldb)bs s -a 0xCCCCC
(lldb)bs s -a '0x6+0x9'

禁用所有斷點(diǎn)
(lldb)br dis
禁用某個(gè)斷點(diǎn)
(lldb)br dis 6
啟用所有斷點(diǎn)
(lldb)br en
啟用所有斷點(diǎn)
(lldb)br en 6
刪除所有斷點(diǎn)
br del
刪除某個(gè)斷點(diǎn)
br del 8

指定在某個(gè)斷點(diǎn)得到出發(fā)的時(shí)候,執(zhí)行預(yù)先設(shè)置指令:
(lldb) br com add 1

3.print

打印某處的值

po 打印Object-C對(duì)象

p(char*) 通過(guò)強(qiáng)制轉(zhuǎn)換的方式打印了C語(yǔ)言基本數(shù)據(jù)類型對(duì)象

4.nexti與stepi

“nexti”與“stepi”的作用都是執(zhí)行下一條機(jī)器指令,它們最大的區(qū)別是前者不進(jìn)入函數(shù)體翎嫡,而后者會(huì)進(jìn)入函數(shù)體欠动。它們可分別簡(jiǎn)寫為“ni”與“si”,是調(diào)試時(shí)使用最多的指令之一”

5.register write

“register write”命令用于給指定的寄存器賦值钝的,從而“對(duì)程序進(jìn)行改動(dòng)翁垂,觀察程序的執(zhí)行過(guò)程有什么變化”∠踝”

四丶LLDB使用小提示

4.1.調(diào)試的二進(jìn)制文件必須從iOS中提取

4.2.LLDB中的簡(jiǎn)化輸入

4.2.1.在使用LLDB時(shí)沿猜,如果想重復(fù)執(zhí)行上一條指令,直接按回車鍵
4.2.2.如果想查看以前執(zhí)行過(guò)的指令碗脊,按方向鍵的向上和向下鍵就可以了啼肩。

五丶總結(jié):

...除了lldb;其他還需要具體情況,具體使用;實(shí)踐后才能領(lǐng)會(huì);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市衙伶,隨后出現(xiàn)的幾起案子祈坠,更是在濱河造成了極大的恐慌,老刑警劉巖矢劲,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赦拘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡芬沉,警方通過(guò)查閱死者的電腦和手機(jī)躺同,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)丸逸,“玉大人蹋艺,你說(shuō)我怎么就攤上這事』聘眨” “怎么了捎谨?”我有些...
    開封第一講書人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涛救,道長(zhǎng)畏邢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任州叠,我火速辦了婚禮棵红,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咧栗。我一直安慰自己逆甜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開白布致板。 她就那樣靜靜地躺著交煞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斟或。 梳的紋絲不亂的頭發(fā)上素征,一...
    開封第一講書人閱讀 52,895評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音萝挤,去河邊找鬼御毅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛怜珍,可吹牛的內(nèi)容都是我干的端蛆。 我是一名探鬼主播,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼酥泛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼今豆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起柔袁,我...
    開封第一講書人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呆躲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后捶索,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體插掂,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年腥例,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了燥筷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡院崇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袍祖,到底是詐尸還是另有隱情底瓣,我是刑警寧澤,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站捐凭,受9級(jí)特大地震影響拨扶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茁肠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一患民、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垦梆,春花似錦匹颤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至京腥,卻和暖如春赦肃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背公浪。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來(lái)泰國(guó)打工他宛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欠气。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓厅各,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親晃琳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子讯检,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容