Advanced.Apple.Debugging.&.Reverse.Engineering.v2.0 學(xué)習(xí)筆記

Chap 16 講解了如何顯示出來(lái)蘋(píng)果的調(diào)試窗口 UIDebuggingInformationOverlay敛助,內(nèi)容最后当船,作者提到他自己的lldb_commands里提供了python腳本核偿,可以直接完成在模擬器或者真機(jī)上顯示出這個(gè)Overlay壹士,嘗試了一下筑公,簡(jiǎn)單記錄了步驟颓鲜。
lldb_commands在這里

模擬器是 iOS 11.2

如何查看模擬器里Apple原生App的 process名稱:

1, 用lldb隨便連接一個(gè)已經(jīng)知道process name的App:
flora:~ flora $ lldb -n Maps
(lldb) process attach --name "Maps"

成功連上后棚放,控制臺(tái)輸出信息的最底部枚粘,出現(xiàn):

Executable module set to "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/Applications/Maps.app/Maps".
Architecture set to: x86_64h-apple-ios.

復(fù)制地址:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/Applications
并在控制臺(tái)用open命令打開(kāi), 進(jìn)入到Finder, Applications目錄中顯示了模擬器自帶的app.

finder-applications.png

2, 查找自己要找的App, 如果不確定找的對(duì)不對(duì),可以右鍵打開(kāi)包查看是不是自己需要的飘蚯。
3, 我要找的是Calendar, 直接lldb -n Calendar會(huì)報(bào)錯(cuò):
(lldb) process attach --name "Calendar"
error: attach failed: could not find a process named Calendar

可見(jiàn)它的名字不是Calendar

4, 通過(guò)上面的方法, 在Applications目錄里找到了MobileCal.app, 試一下:
# lldb -n MobileCal
(lldb) process attach --name "MobileCal"
Process 52308 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x000000011689c34a libsystem_kernel.dylib` mach_msg_trap  + 10
libsystem_kernel.dylib`mach_msg_trap:
->  0x11689c34a <+10>: ret
    0x11689c34b <+11>: nop
libsystem_kernel.dylib'mach_msg_overwrite_trap:    0x11689c34c <+0>: mov    r10, rcx
    0x11689c34f <+3>:  mov    eax, 0x1000020
    0x11689c354 <+8>:  syscall
    0x11689c356 <+10>: ret
    0x11689c357 <+11>: nop
libsystem_kernel.dylib'semaphore_signal_trap:    0x11689c358 <+0>: mov    r10, rcx
Target 0: (MobileCal) stopped.

Executable module set to "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/Applications/MobileCal.app/MobileCal".
Architecture set to: x86_64h-apple-ios.

attach成功

5, 顯示overlaywindow
(lldb) overlaydbg
Displaying UIDebuggingInformationOverlay... resume execution

(lldb) continue
Process 52308 resuming

在iphone x 模擬器上截屏如下:


Simulator Screen Shot - iPhone X - 2018-03-23 at 14.34.59.png
6, 這是一次就成功的情況, 我第一次執(zhí)行lldb -n MobileCal時(shí),遇到了一個(gè)問(wèn)題福也,提示attach失斁种琛:
flora:~ flora $ lldb -n MobileCal
(lldb) process attach --name "MobileCal"
error: attach failed: more than one process named MobileCal:
PID    PARENT USER       TRIPLE                   ARGUMENTS
====== ====== ========== ======================== ============================
52308  587    flora       x86_64-apple-macosx      /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/Applications/MobileCal.app/MobileCal
20201  20091  flora       x86_64-apple-macosx      /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/Applications/MobileCal.app/MobileCal

只能使用pid進(jìn)行attach。

(lldb) process attach --pid 52308
Process 52308 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x000000011689c34a libsystem_kernel.dylib` mach_msg_trap  + 10
libsystem_kernel.dylib`mach_msg_trap:
->  0x11689c34a <+10>: ret
    0x11689c34b <+11>: nop
libsystem_kernel.dylib'mach_msg_overwrite_trap:    0x11689c34c <+0>: mov    r10, rcx
    0x11689c34f <+3>:  mov    eax, 0x1000020
    0x11689c354 <+8>:  syscall
    0x11689c356 <+10>: ret
    0x11689c357 <+11>: nop
libsystem_kernel.dylib'semaphore_signal_trap:    0x11689c358 <+0>: mov    r10, rcx
Target 0: (MobileCal) stopped.

Executable module set to "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/Applications/MobileCal.app/MobileCal".
Architecture set to: x86_64h-apple-ios.

attach 成功暴凑。

(lldb) overlaydbg
Displaying UIDebuggingInformationOverlay... resume execution

(lldb) continue
Process 52308 resuming

很奇怪的現(xiàn)象是峦甩,此時(shí)使用另外一個(gè)控制臺(tái),直接執(zhí)行 lldb -n MobileCal 就能成功attach上.

如果剛才指定pid時(shí)现喳,指定另外一個(gè)呢凯傲?
(lldb) process attach --pid 20201
There is a running process, detach from it and attach?: [Y/n] y
Process 52308 detached
Process 20201 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x000000010b72834a libsystem_kernel.dylib` mach_msg_trap  + 10
libsystem_kernel.dylib`mach_msg_trap:
->  0x10b72834a <+10>: ret
    0x10b72834b <+11>: nop
libsystem_kernel.dylib'mach_msg_overwrite_trap:    0x10b72834c <+0>: mov    r10, rcx
    0x10b72834f <+3>:  mov    eax, 0x1000020
    0x10b728354 <+8>:  syscall
    0x10b728356 <+10>: ret
    0x10b728357 <+11>: nop
libsystem_kernel.dylib'semaphore_signal_trap:    0x10b728358 <+0>: mov    r10, rcx
Target 0: (MobileCal) stopped.

看樣子也是成功的, 但是想要查看overlay是,卻不能夠:

(lldb) overlaydbg
Failure, womp

看來(lái)這個(gè)進(jìn)程不能顯示overlay嗦篱,那么第一個(gè)嘗試的pid就是當(dāng)前正在前臺(tái)的Calendar的進(jìn)程了.
當(dāng)然冰单,此時(shí)在另外的控制臺(tái)直接lldb -n MobileCal也是能夠成功attach到Calendar的。

7, 如果是有源碼的App, 直接在Schemes中查看Executable就是它進(jìn)程的名稱, 不需要額外的查看灸促。
8, 模擬器里安裝AppStore上的應(yīng)用有點(diǎn)困難, 就不考慮了诫欠。
9, 真機(jī)環(huán)境 iPhone 6p, iOS 11.2

運(yùn)行我自己的程序,然后點(diǎn)『暫驮≡裕』進(jìn)入lldb調(diào)試環(huán)境, 輸入: overlaydbg:

(lldb) overlaydbg
Displaying UIDebuggingInformationOverlay... resume execution

(lldb) continue
Process 5240 resuming

真機(jī)成功顯示debuggingOverlay荒叼。
第一次執(zhí)行報(bào)了兩個(gè)python的錯(cuò)誤(手慢沒(méi)幾下來(lái)), 再次執(zhí)行就成功了,也沒(méi)有再出現(xiàn)錯(cuò)誤, 可惜。

10, 真機(jī)環(huán)境的第三方APP, 暫時(shí)還沒(méi)嘗試如何連上lldb典鸡。但是如果能使用方法, 例如usbmuxd連上lldb, 執(zhí)行overlaydbg應(yīng)該也能顯示出debuggingOverlay的.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末被廓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子萝玷,更是在濱河造成了極大的恐慌嫁乘,老刑警劉巖英遭,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異亦渗,居然都是意外死亡挖诸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)法精,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)多律,“玉大人,你說(shuō)我怎么就攤上這事搂蜓±擒瘢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵帮碰,是天一觀的道長(zhǎng)相味。 經(jīng)常有香客問(wèn)我,道長(zhǎng)殉挽,這世上最難降的妖魔是什么丰涉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮斯碌,結(jié)果婚禮上一死,老公的妹妹穿的比我還像新娘。我一直安慰自己傻唾,他們只是感情好投慈,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著冠骄,像睡著了一般伪煤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凛辣,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天抱既,我揣著相機(jī)與錄音,去河邊找鬼蟀给。 笑死蝙砌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跋理。 我是一名探鬼主播择克,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼前普!你這毒婦竟也來(lái)了肚邢?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎骡湖,沒(méi)想到半個(gè)月后贱纠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡响蕴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年谆焊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浦夷。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辖试,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出劈狐,到底是詐尸還是另有隱情罐孝,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布肥缔,位于F島的核電站莲兢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏续膳。R本人自食惡果不足惜改艇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姑宽。 院中可真熱鬧遣耍,春花似錦、人聲如沸炮车。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瘦穆。三九已至,卻和暖如春赊豌,著一層夾襖步出監(jiān)牢的瞬間扛或,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工碘饼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熙兔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓艾恼,卻偏偏與公主長(zhǎng)得像住涉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钠绍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)舆声、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,033評(píng)論 4 62
  • 01 蘿卜在古代草本集里就有記載碱屁,是一樣下氣消滯的好東西。 冬吃蘿卜蛾找,夏吃姜娩脾。 我們熟知的有青蘿卜,...
    查欣欣閱讀 233評(píng)論 1 1
  • 01 小學(xué)的課文里,有一篇余光中的《鄉(xiāng)愁》隘冲∧智疲“小時(shí)候,鄉(xiāng)愁是一張小小的郵票展辞,我在這頭奥邮,母親在那頭。長(zhǎng)大后罗珍,鄉(xiāng)愁是一...
    夕夕醬閱讀 983評(píng)論 9 11
  • 年輕的女人露著胸部洽腺,衣衫不整的老人吸允著她的乳頭。魯本斯的油畫(huà)作《西門(mén)與佩羅》覆旱。 首次進(jìn)入博物館的人們看到這幅畫(huà)大...
    張強(qiáng)用生命影響生命閱讀 226評(píng)論 2 2
  • 前言 時(shí)間一眨眼又過(guò)去一年了蘸朋,過(guò)去一年似乎又很快樂(lè),又很悲愁扣唱,真的是傻傻過(guò)一年啊藕坯。總想寫(xiě)一篇文章來(lái)紀(jì)念過(guò)去一年的一...
    水琰閱讀 462評(píng)論 0 1