逆向?qū)W習筆記7——LLDB

斷點

通常我們逆向別人的app拿到的只是一個可執(zhí)行文件司澎,沒辦法像平常一樣,直接在Xcode上面加斷點了,這個時候就需要我們掌握LLDB添加斷點的技能* 設(shè)置斷點

/* 
 * set 是子命令 
 * -n 是選項 是--name 的縮寫! 
 */
$breakpoint set -n XXX//也可以指定某個類的方法
$breakpoint set -n "-[ViewContoller viewDidload]"
  • 查看斷點列表
$breakpoint list
  • 刪除
$breakpoint delete 組號
  • 禁用/啟用
$breakpoint disable 禁用 --> 也可以用簡寫 
$break dis$breakpoint enable 啟用 -->也可以用簡寫 $break en
  • 遍歷整個項目中包括xxx這個字符的所有方法
$breakpoint set -r xxx 

如果想了解更多lldb只是,可以在lldb輸入help breakpoint相關(guān)命令補充

  • 繼續(xù)執(zhí)行
$continue 簡寫==> c
  • 單步運行,將子函數(shù)當做整體一步執(zhí)行
$next 簡寫==> n
  • 單步運行,遇到子函數(shù)會進去
$s

expression

  • p 是expression的簡寫
  • po是expression -O的簡寫
    下面我們做一個關(guān)于expression的簡單例子般妙。創(chuàng)建一個類名為Person,并給他兩個屬性name,age相速。ViewController中的代碼如下:
- (void)viewDidLoad 
{
     [super viewDidLoad];
     _models = [[NSMutableArray alloc] init];
     Person * p1 = [[Person alloc] init];
     p1.name = @"lq_1"; p1.age = 1;
     [self.models addObject:p1];
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"%@",self.models);
}

再通過lldb命令設(shè)置斷點

b -n "[ViewController touchesBegan:withEvent:]"

這個是demo中的準備工作碟渺。廢話不多說下面正式進入expression的操作練習,當點擊屏幕突诬,進入lldb模式止状。

  • 1.改變界面顏色

p self.view.backgroundColor = [UIColor orangeColor]

  • 2.給數(shù)組添加新的項

p [self.models addObject:[[Person alloc] init] ]

  • 3.獲取數(shù)組中的最后一個數(shù)據(jù)

po self.models.lastObject

  • 4.改變數(shù)組中的model

//1烹棉,先拿到model,注意這里必須要類型轉(zhuǎn)換怯疤,不然拿不到$0的值

p (Person *)self.models.lastObject

(Person *) $0 = 0x00006000002282e0

//2浆洗,改變model中name/age的值

p $0.name = @"lq_1"

p $0.age = 22

  • 5.添加一個賦值的model(也就是多行代碼)

p Person * p2 = [[Person alloc] init];//ctrl+回車換行

p2.name = @"lq_2";//ctrl+回車換行

p2.age = 18;    //ctrl+回車換行

[self.models addObject:p2];

堆棧控制

  • 1.查看堆棧信息

bt

  • 2.前進/回退

up/down

  • 3.打印當前函數(shù)的參數(shù)

frame variable

  • 4.跳轉(zhuǎn)到指定地方

frame select XX //XX值是通過bt得到結(jié)果的每條指令的編號

command

  • 某個斷點觸發(fā)的時候做相應(yīng)的操作

break command add x //x是斷點的編號

>po self

>po self.view

>DONE

  • 查看command的list
break command list x //x是斷點的編號—>一定是你add時候一樣的編號集峦,不然是查不到list
  • 刪除command
break command delete x //x是斷點的編號

stop-hook

  • 每次stop的時候去執(zhí)行一些命令,只對breadpoint,watchpoint生效
target stop-hook add -o "xxx" //xxx值llbd得指令伏社,比如frame variable / bt
  • 查看stop-hook的列表
 target stop-hook list
  • 刪除
undisplay x //x指編號,刪除某一個
target stop-hook delete //全部刪除
  • 附加內(nèi)容:stop-hook的高級用法(這里并不常用喔)
    image.png

    然后在該文件里面塔淤,添加命令target stop-hook add -o "p self.view"摘昌,這時候每次斷點進入都會打印self.view。(這里的lldb指令高蜂,你自己可以任意設(shè)置)

image

相信有經(jīng)驗的開發(fā)者都知道聪黎,模擬器的數(shù)組越界都會顯示詳細的堆棧信息,但是真機數(shù)組越界顯示的是如下信息

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndexedSubscript:]: index 3 beyond bounds [0 .. 1]'
*** First throw call stack:
(0x18288fd38 0x181da4528 0x182828c44 0x182815e54 0x1012fe42c 0x18be1cae0 0x18be1c978 0x18bcd338c 0x18bccea70 0x18bca0078 0x18c5dff98 0x18c5e2408 0x18c5db574 0x182838358 0x1828382d8 0x182837b60 0x182835738 0x1827562d8 0x1845e7f84 0x18bd03880 0x1012fe5c0 0x18227a56c)
  • 查看內(nèi)存地址的堆棧信息
image lookup -a xxxx //xxx是上面的內(nèi)存地址

得到如下結(jié)果

(lldb) image lookup -a 0x1012fe42c
      Address: LLDBDemo[0x000000010000642c] (LLDBDemo.__TEXT.__text + 1496)
      Summary: LLDBDemo`-[ViewController touchesBegan:withEvent:] + 172 at ViewController.m:69
(lldb) 
  • 查看某個類的.h文件
image lookup -t xxx // xxx指這個類

在如下位置添加斷點

image.png

利用命令image lookup -t Person,得到如下結(jié)果
image.png

至此备恤,常用的lldb已經(jīng)講完了稿饰,趕快打開xcode多練練吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末露泊,一起剝皮案震驚了整個濱河市喉镰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惭笑,老刑警劉巖侣姆,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沉噩,居然都是意外死亡捺宗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門川蒙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚜厉,“玉大人,你說我怎么就攤上這事派歌⊥淠遥” “怎么了痰哨?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵胶果,是天一觀的道長。 經(jīng)常有香客問我斤斧,道長早抠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任撬讽,我火速辦了婚禮蕊连,結(jié)果婚禮上悬垃,老公的妹妹穿的比我還像新娘。我一直安慰自己甘苍,他們只是感情好尝蠕,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著载庭,像睡著了一般看彼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上囚聚,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天靖榕,我揣著相機與錄音,去河邊找鬼顽铸。 笑死茁计,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的谓松。 我是一名探鬼主播星压,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毒返!你這毒婦竟也來了租幕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拧簸,失蹤者是張志新(化名)和其女友劉穎劲绪,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盆赤,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡贾富,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了牺六。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颤枪。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖淑际,靈堂內(nèi)的尸體忽然破棺而出畏纲,到底是詐尸還是另有隱情,我是刑警寧澤春缕,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布盗胀,位于F島的核電站,受9級特大地震影響锄贼,放射性物質(zhì)發(fā)生泄漏票灰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屑迂。 院中可真熱鬧浸策,春花似錦、人聲如沸惹盼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽手报。三九已至夫晌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昧诱,已是汗流浹背晓淀。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盏档,地道東北人凶掰。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像蜈亩,于是被迫代替她去往敵國和親懦窘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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

  • LLDB的Xcode默認的調(diào)試器稚配,它與LLVM編譯器一起畅涂,帶給我們更豐富的流程控制和數(shù)據(jù)檢測的調(diào)試功能。平時用Xc...
    CoderSC閱讀 1,358評論 0 2
  • ??LLDB的Xcode默認的調(diào)試器道川,它與LLVM編譯器一起午衰,帶給我們更豐富的流程控制和數(shù)據(jù)檢測的調(diào)試功能。平時用...
    Thinkdifferents閱讀 1,557評論 1 4
  • LLDB的Xcode默認的調(diào)試器冒萄,它與LLVM編譯器一起臊岸,帶給我們更豐富的流程控制和數(shù)據(jù)檢測的調(diào)試功能。平時用Xc...
    小笨狼閱讀 20,473評論 31 187
  • 轉(zhuǎn)載 與調(diào)試器共舞 - LLDB 的華爾茲: https://objccn.io/issue-19-2/ 推薦:i...
    F麥子閱讀 3,332評論 0 10
  • 久居都市,心生疲憊崖技,特別渴望來一次親近山水自然之旅逻住,期待洗去浮躁疲憊,找回內(nèi)心的寧靜迎献。原本計劃趁端午小長假...
    麥黃果閱讀 4,196評論 1 4