iOS調試速查表

2021-02-18 知識小集

這篇文章寫自2016年5月份,但我在日常工作中自己還是會查詢一下,再次分享一下哈。不只是逆向中使用,日常調試也會用到。

逆向過程中命令太多記不住,就整理了這個速查表,分享給大家。我只是看完了小黃書《iOS應用逆向工程》,這幾個月沒有再深入研究逆向。最近又想逆向幾個app學習下怎麼實現,發現很多命令都忘記了。於是整理了這個表。copy and paste就可以愉快的學習其他app的實現了。

命令都很基礎、簡單、常用,主要是我也只學了這麼多哈。

common

ssh免密碼:

ssh-copy-id -i /Users/everettjf/.ssh/id_rsa root@localhost -p 2222

查找進程:

ps aux | grep /Appps -e | grep /Applications

查找文件:

grep -r ToBeFind /System/Library/

分離fat binary

lipo -thin armv7 WeChat.decrypted -output WeChat_armv7.decryptedlipo -thin armv64 xxx.decrypted -output xxx_arm64.decrypted

class dump

class-dump --list-arches AlipayWallet.decrypted
class-dump -S -s -H WeChat_armv7.decrypted -o dumparmv7class-dump -s -S -H --arch armv7 AlipayWallet.decrypted -o dumpAlipay

lldb

參考

•https://github.com/iosre/iOSAppReverseEngineering[1]•http://objccn.io/issue-19-2/[2]

幫助

列印UI結構

po [[[UIWindow keyWindow] rootViewController] _printHierarchy] (iOS 8)po [[UIWindow keyWindow] recursiveDescription]

棧信息

bt (backtrace)bt all (all threads)

objc_msgSend 參數列印

po $r0p (char*)$r1p (SEL)$r1

返回地址

斷點

br s -a 0x0023234fbreakpoint set -F "-[NSArray objectAtIndex:]"
br s -a 0x02107730+0x000ab000 -c '(BOOL)[(NSString *)$r2 isEqualToString:@"snakeninny"]'
b ptrace

列舉模塊

lldb基礎命令

cnsframe infoexpr
thread returnbreakpoint command add 1

遠程調試

debugserver *:1234 -a AlipayWalletdebugserver -x backboard *:1234 /var/mobile/Containers/Bundle/Application/9DB7CE45-3B4C-42A3-9D4D-49A3A5122903/AlipayWallet.app/AlipayWallet

lldb連接遠程調試

(lldb) process connect connect://192.168.199.164:1234

lldb expr例子

(lldb) expr char *$str = (char *)malloc(8)(lldb) expr (void)strcpy($str, "munkeys")(lldb) expr $str[1] = 'o'(char) $0 = 'o'(lldb) p $str(char *) $str = 0x00007fd04a900040 "monkeys"
(lldb) x/4c $str(lldb) x/1w `$str + 3`(lldb) expr (void)free($str)
(lldb) expr id $myView = (id)0x7f82b1d01fd0(lldb) expr (void)[$myView setBackgroundColor:[UIColor blueColor]](lldb) expr (void)[CATransaction flush]
(lldb) po [$myButton allTargets]
(lldb) p (ptrdiff_t)ivar_getOffset((struct Ivar *)class_getInstanceVariable([MyView class], "_layer"))

觀察點

(lldb) watchpoint set expression -- (int *)$myView + 8

arm64

param1 $x0param2 $x1
po $x0p (char*)$x1

cycript

參考: http://www.cycript.org/manual/[3]

開始

列印UI結構

[[UIWindow keyWindow] recursiveDescription].toString()[[[UIWindow keyWindow] rootViewController] _printHierarchy].toString()

列印沙盒Documents路徑

[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask]

基本使用

cy# [#0xb226710 url]@"ww4fd1rfRDShBo_4K6rqfwAAACMAAQED"
cy# c = #0x1752d8c0cy#"<FavAudioPlayerController: 0x1752d8c0; frame = (0 0; 290 60); autoresize = W; layer = <CALayer: 0x172dc2b0>>"cy# c->m_audioInfocy#"<FavAudioInfo: 0x172b2a30>"cy# c->m_audioInfo.m_nsAudioPath

linker

-Wl,-sectcreate,__RESTRICT,__restrict,/dev/nullinto Other link flag

Anti

iHex replace RESTRICT , restrictldid -S AppNameAppSync

Info.plist

輸出bundle id

/var/mobile/Containers/Bundle/Application/9DB7CE45-3B4C-42A3-9D4D-49A3A5122903/AlipayWallet.app root# cat Info.plist | grep com. <string>com.alipay.iphoneclient</string>

dumpdecrypted

https://github.com/stefanesser/dumpdecrypted[4]

例子

scp -P 2222 Security/dumpdecrypted-master/dumpdecrypted.dylib root@localhost:/var/mobile/Containers/Data/Application/BA2644DB-450F-4DB0-A71F-A38F65488A48/Documents/
scp ~/sec/dumpdecrypted-master/dumpdecrypted.dylib root@192.168.199.164:/var/mobile/Containers/Data/Application/72AB36DD-2E9B-47C0-9695-099235E40C3C/Documents/dumpdecrypted.dylib
everettjfs-iPhone:/var/mobile/Containers/Data/Application/72AB36DD-2E9B-47C0-9695-099235E40C3C/Documents root# DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/2DAD493D-6275-4CED-8242-BDEF27F36740/AlipayWallet.app/AlipayWallet

theos

https://github.com/theos/theos[5]

開始

everettjf@e WeChatVoiceSaver (master)]$ ~/sec/theos/bin/nic.pl

chisel

參考:https://github.com/facebook/chisel[6]

usbmuxd

•https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz[7]•https://cgit.sukimashita.com/usbmuxd.git/[8]

First:

cd python-clientpython tcprelay.py -t 22:2222

Then:

ssh root@localhost -p 2222

PS:文章首次發布於iosre.com[9]

References

[1]: https://github.com/iosre/iOSAppReverseEngineering
[2]: http://objccn.io/issue-19-2/
[3]: http://www.cycript.org/manual/
[4]: https://github.com/stefanesser/dumpdecrypted
[5]: https://github.com/theos/theos
[6]: https://github.com/facebook/chisel
[7]: https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz
[8]: https://cgit.sukimashita.com/usbmuxd.git/
[9] 文章首次發布於iosre.com: http://iosre.com/t/debug/3778

推薦閱讀

關於TapGesture、UIResponder 鏈和 target-action 事件的相互影響的機理和應用

Swift 5

Xcode 10.2

Core Graphic 指南:模式

從webview到flutter:詳解iOS中的Web開發

在看就點點吧 

相關焦點

  • Wwise Unity 速查表
    不如我們把筆記貼出來,據此構建一個速查表,然後在上面註明用來加快 Wwise Unity 開發流程的各種妙招。但內容最好不超過一頁,這樣比較方便訪問和管理。 在提出對速查表的建議之前,我想先說說事先的一些考慮。 它能不能提供長遠的幫助?內容是否具有普遍適用性?
  • 機器學習速查表(cheatsheet)資源匯總分享
    本文收集整理了機器學習相關速查表(Machine Learning Cheatsheet),包含機器學習、Python、Numpy、Pandas、Matplotlib、線性代數、微積分、統計學、概率論等相關速查表。
  • 從理論概念到庫函數語法:機器學習速查表全集
    By蔣思源 2017年7月17日  機器之心此前曾提供過機器學習和深度學習最好的九張代碼速查表,不過近日又有博主發表了一次完全的速查表。雖然有一些和以前是重複的,但還是增加了一些新的速查表。本文前一部分主要重點描述新添加的速查表,後一部分再為讀者提供一些以前的速查表資源。這些速查表暫時是保持英文的,因為後面一些不熟悉的庫和函數我們可能編譯不太精確。
  • HTML 5標籤、屬性、事件及瀏覽器兼容性速查表
    為了方便大家學習HTML 5 ,本文與大家分享幾份 HTML 5 標籤、屬性、事件及瀏覽器兼容性速查表。HTML 5 Cheat Sheet非常完整的一份HTML 5速查表,包括HTML 5 標籤、屬性、事件及其瀏覽器兼容性,圖片格式。
  • 前端開發相關速查表Cheatsheets整理集合
    當然寫多了以後自然而然的查 API 文檔的次數就會越來越少。但是當剛進一個領域再回來後發現自己又是什麼都不懂。聰明的前端開發工程在乎的是寫程式的思維,而不API文檔。因為記住所有API幾乎是不可能的。速查表(Cheatsheets)裡頭存放著濃縮過後的精華,當你是個有經驗的人,使用 速查表(Cheatsheets)能夠幫自己快速的複習,並且用最短的時間讓自己恢復到開發狀態,因此常常會去搜集各個前端開發相關速查表(Cheatsheets)有利於我們快速開發,節省一些不必要的時間浪費。
  • 命學至寶—八字萬能速查表!
    注圖文來源網絡,侵刪                                                                                                                                  八字萬能速查表公開其實人生的命運,八字才是影響力最大的
  • DataCamp 推出的 Python 數據科學速查表,已經翻譯成中文啦!
    Python基礎系列推出的內容包括:Python 基礎、Python進階、導入數據及 Jupyter Notebook:Python數據科學速查表 - Python 基礎Python數據科學速查表 - 導入數據
  • 八字算命十神速查表,命理愛好者的福音
    注圖文來源網絡,侵刪                                                                                                                                   八字算命十神速查表
  • 電氣工程技術交底匯總+41個自動計算表和資料速查表,最為專業
    後來我就給他整理了一個交底匯總,和幾十個電氣自動計算Excel模板,常用的電氣資料速查表。這還真不是我一個人能幹得了的,只能悄悄說一句:中建還是牛!41個自動計算表和資料速查表,文末有資料獲取方式自動計算表和資料速查表
  • 可能是史上最全機器學習和Python速查表(附下載連結)
    當我開始刷新這個主題時,我遇到了各種「速查表」,這裡僅列出了需要知道的給定主題的所有要點。 最後,我收集了與機器學習相關的速查表。有些我經常參考,並且認為其他人也可能從中受益。因此, 這篇文章把我從網上發現的很好的27個速查表分享出來,以供大家參考。後臺回復關鍵詞「速查表」下載27個速查表。
  • 資源 | 全機器學習和Python的27個速查表(完整版)
    這裡只包括所發現的最全面的速查表。神經網絡架構(NeuralNetwork Architectures)來源:http://www.asimovinstitute.org/neural-network-zoo/
  • 火星星座速查表:1970-1979年出生的70後小夥伴適用
    鑑於很多朋友不會自己開出生盤,維氏佔星特別推出「星座速查」系列,只要你知道自己的陽曆生日,就可以通過查表,了解自己出生盤裡的各種星座配置。第七篇:火星星座星曆表-1(70後)下表是1970-1979年出生人群的火星星座,只要拿你的生日去找就行了,需要注意以下幾點:(1)以下統計使用北京時間和東八區,其他國家和時區慎用。
  • 一張函數速查表,內含480多個函數用法
    這節,我就分享一個《Excel函數速查表》,內置480多個函數使用說明。此工具為Excel版,共兩張表格:①函數速查表;②函數總表;函數速查表使用方法很簡單,在表格的F3單元格,輸入需要查詢的函數名稱函數總表此表中,羅列了483個函數及詳細的用法,如,函數、類別、屬性、說明、語法等。
  • 教程| 初學者如何選擇合適的機器學習算法(附速查表)
    機器學習算法速查表機器學習算法速查表可幫助你從大量算法之中篩選出解決你的特定問題的算法,同時本文也將介紹如何使用該速查表。由於該速查表專門針對數據科學和機器學習的初學者,所以在探討這些算法之時,我們做了一些簡化的假設。本文中所有推薦的算法均來自於程序編譯反饋以及若干個數據科學家、機器學習專家和開發者的建議。
  • 火星星座速查表3:1990-99年出生的90後小夥伴適用
    很多人不會自己開出生盤,維氏佔星特別推出「星座速查」系列,只要你知道自己的陽曆生日,就可以通過查表,了解自己出生盤裡的各種星座配置。 第七篇:火星星座星曆表-3(90後) 下表是1990-1999年出生人群的火星星座,只要拿你的生日去找就行了,需要注意以下幾點: (1)以下統計使用北京時間和東八區,其他國家和時區慎用。
  • 風水之三元九運速查表
    風水之三元九運速查表      提要:風水學就把時運劃分為九個。九個運分為三組,用「元運」來稱呼它。三個元運就是上元、中元、下元。合稱為「三元九運」。  玄學上把這種時日的轉變稱做「運」。不是有「時來運到」這樣一句話嗎?風水學上怎樣劃分時運呢?  大家還記得洛書上有多少個數字嗎?1、2、3、4、5、6、7、8、9,不就是九個數字。
  • 中醫人學點易學:四柱八字萬能速查表!(大全)
    胎 元速查表空 亡速查表五、十二神地支定局速查表
  • 完整八字算命神煞速查及詳解(全部)
    神煞速查表2神煞速查表3神煞速查表4神煞速查表5桃花速查表
  • 馬鞍山2020年市區省示範高中指標生分配表公布!用「皖事通」速查...
    馬鞍山2020年市區省示範高中指標生分配表公布!用「皖事通」速查校內排名 2020-08-04 16:23 來源:澎湃新聞·澎湃號·政務
  • Android應用測試速查表
    介紹這份速查表提供了一份進行Android應用測試所需要進行的測試清單。主要根據OWASP十大移動安全問題進行敘述。1.1. 測試方法論一個完整的安卓應用滲透測試包含了幾個不同的領域,如上圖所示。1.1.1. 應用架構在這個領域,重點在於理解應用程式邏輯和應用程式到底是做什麼的。