越獄調試Reveal、debugserver、Class-dump、命令行工具、LLDB手動砸殼

一、Reveal

Reveal:界面、輕量級
Cycript:可以對內存訪問
LLDB:可以看函數調用棧、下斷點

1.1 Mac電腦安裝Reveal
1.2 (越獄)iPhone,Cydia安裝Reveal Loader

安裝Reveal Loader之后,系統設置中會出現Reveal

打開系統設置頁面進入Reveal設置打開對應APP

1.3、環境配置

導入dylib文件,由于新版本的Reveal只有Framework文件,所以需要修改Framework的可執行文件為dylib庫

找到相關庫

RevealServer拷貝到桌面,然后重命名為libReveal.dylib,然后拷貝到手機目錄中。
在手機的/Library 目錄下新建目錄$mkdir RHRevealLoader,需要把libReveal.dylib拷貝到RHRevealLoader中。scp -P 12345 ~/Desktop/libReveal.dylib root@localhost:/Library/RHRevealLoader

重啟手機(Reveal支持USB鏈接和Wi-Fi鏈接,如果使用Wi-Fi鏈接必須讓手機和Mac保持統一局域網)
重啟Mac的Reveal


二、debugserver

我們Xcode中的lldb可以調試手機中的應用,是因為手機中的debugserver開啟的相關服務。所以在越獄環境中,我們只需要開啟debugserver服務就可以利用LLDB遠程調試三方應用了。

Mac中的debugserver,在/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/中可以看到對應不同iOS系統版本的鏡像文件


打開DeveloperDiskImage.dmg文件,進入usr/bin目錄可以看到debugserver。這就是xcode安裝到真機中的文件。

1.1、iPhone啟動debugserver、Mac連接debugserver(這里是Wi-Fi鏈接)
  • iPhone中開啟debugserver服務。
    $debugserver 主機地址:端口號 –a 應用進程 eg:./debugserver *:12346 -a WeChat
    由于主機地址是當前手機,可以使用*代替
    端口號:啟動server服務,開放端口,讓遠程的LLDB通過sever調試進程

  • Mac上啟動LLDB連接iPhone
    啟動LLDB,$lldb
    連接debugserver,(lldb)process connect connect://手機IP:服務端口號 eg:process connect connect://192.168.254.240:12346

1、將debugserver先拷貝到桌面,然后拷貝到手機上 scp -P 12345 ~/Desktop/debugserver root@localhost:~/,最后會把debugserver放在/usr/bin/目錄下,可以在任何地方都可以用debugserver
2、./debugserver *:12346 -a WeChat,iPhone中開啟debugserver服務,手機WeChat界面已經沒法動了

3、啟動LLDB $lldb,鏈接debugserver process connect connect://192.168.254.240:12346,這個是Wi-Fi鏈接有點慢

(lldb) c 就能動了
(lldb) exit 退出,一退出應用就掛掉了,相當于殺掉應用

1.2、usb鏈接

1、端口映射

2、./debugserver *:12346 -a WeChat,iPhone中開啟debugserver服務,手機WeChat界面已經沒法動了
3、啟動LLDB $lldb,鏈接debugserver process connect connect://localhost:12346,這個是usb鏈接

(lldb) process interrupt 進入暫停狀態

pvcpviewspo 0x156911000 只有在暫停狀態這些指令才有用哦

找到target和action

(lldb) p [(UIButton *)0x157ef94e0 allTargets]
(__NSSetM *) $7 = 0x0000000157abb4f0 1 element
(lldb) po 0x0000000157abb4f0
{(
    <WCAccountNewPhoneVerifyViewController: 0x156aa5200>
)}

(lldb) p [(UIButton *)0x157ef94e0 actionsForTarget:(id)0x156aa5200 forControlEvent:64]
(__NSArrayM *) $9 = 0x0000000157f45f00 @"1 element"
(lldb) po 0x0000000157f45f00
<__NSArrayM 0x157f45f00>(
onNext
)

(lldb) methods WCAccountNewPhoneVerifyViewController

(lldb) b 0x100479e38

0x10208c670 方法地址(物理地址)

0x100054000 去掉1(_PAGEZERO),0x000054000 偏移地址(ASLR)

方法地址(物理地址) = 偏移地址(ASLR) + 文件偏移地址(.hop中的地址,包含了1(_PAGEZERO))

1.3、手機中的debugserver
  • 系統自帶的debugserver/Developer/usr/bin/

  • 自己的debugserver,配置到/usr/bin/目錄中

1.4、把手機上的MachO拷貝到電腦

scp -P 12345 root@localhost:/var/mobile/Containers/Bundle/Application/1C5755EA-C7FD-4828-BCE2-40E38D467121/WeChat.app/WeChat ~/Desktop/

三、Class-dump

Class-dump是一個命令行工具,它通過查找MachO文件的相關段可以導出未經加密的APP的頭文件。在逆向開發中,砸殼之后的第二件事就是使用它導出頭文件。

安裝
官網
下載class-dump $ git clone https://github.com/nygard/class-dump 拉下來
編譯項目,生成命令行工具。直接使用。
將命令行工具導入/usr/local/bin/class-dump , 上權限 $sudo chmod +x class-dump

使用
命令格式:
單一架構:$class-dump –H MachO文件 -o 頭文件存放目錄 eg:class-dump -H WeChat -o ./headers/class-dump -H WeChat -o ./headers
多種架構:加上--arch 架構 如arm64:$class-dump --arch arm64 –H MachO文件 –o 頭文件存放目錄 eg:class-dump --arch arm64 -H Course -o ./Headers

1.1、Monkey中集成了Class-dump
1.2、Monkey項目中使用Class-dump

a、創建一個Monkey項目
b、TargetApp中添加越獄的.ipa包(eg:微信-7.0.5(越獄應用))
c、TARGETSMonkeyClassDumpBuild Settings中搜索MONKEY,把MONKEYDEV_CLASS_DUMP 改為 YES

d、build一下,會出現WeChat_Headers文件下,里面就是head了

四、命令行工具

一個命令行工具,其實就是一個程序。只要架構正確就可以執行

1、創建一個工程,寫入如下代碼

2、build一下,Show in Finder顯示包內容,找到可以執行文件

3、來到文件夾下,./執行,file查看。arm64只能在手機上執行,然后移動到手機中

4、拷貝到手機中 scp -P 12345 DYZCmdTool root@localhost:~/,然后執行

5、帶參數的,重復以上操作

./DYZCmdTool
./DYZCmdTool -a -b -c -d

五、LLDB手動砸殼

原理把手機內存中解密的部分拷貝出來,然后和加密的MachO對比,覆蓋掉加密的

利用lldb導出內存中解密了的二進制數據

1、將手機上運行的微信的MachO拷貝到電腦桌面 scp -P 12345 root@localhost:/var/mobile/Containers/Bundle/Application/1C5755EA-C7FD-4828-BCE2-40E38D467121/WeChat.app/WeChat ~/Desktop/

cryptoff 16384 從這里開始加密。這里是十進制
cryptsize 101646336 這么大的大小是加密了的。這里是十進制
cryptid 1 加密算法為1

2、獲取手機上微信MachO的物理地址0x00000001000b8000
2.1、DYZyueyu5s:~ root# debugserver *:12346 -a WeChat
2.2、(lldb) process connect connect://localhost:12346

3、內存文件拷貝(LLDB指令) memory read --force --outfile 輸出文件路徑 --binary --count 文件長度 內存地址(開始地址)
memory read 命令
--outfile 導出文件
--count 指定讀取的數據大小
eg: memory read --force --outfile ./decryption.bin --binary --count 101646336 0x00000001000b8000+16384

4、合并文件(終端指令) dd seek=開始合并地址 bs=1 conv=notrunc if=輸入文件路徑 of=輸出文件路徑
dd命令寫入源文件
seek 指定偏移
conv=conversion 保留沒有替換的部分
eg: dd seek=16384 bs=1 conv=notrunc if=./decryption.bin of=~/Desktop/WeChat

5、把Crypt ID 改為 0,保存

6、class-dump -H ~/Desktop/WeChat -o ./Headers

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371