鍍金池/ 教程/ iOS/ Hack 實戰(zhàn)——探究支付寶 App 手勢密碼
Hack 實戰(zhàn)——支付寶 App 手勢密碼校驗欺騙
使用 Reveal 分析他人 App
后臺 daemon 非法竊取用戶 iTunesstore 信息
使用 iNalyzer 分析應用程序
越獄檢測的攻與防
使用 introspy 追蹤分析應用程序
廢除應用程序的 ASLR 特性
使用 Cycript 修改支付寶 App 運行時
敏感邏輯的保護方案
Fishhook
使用 class-dump-z 分析支付寶 App
static 和被裁的符號表
iOS7 的動態(tài)庫注入
二進制和資源文件自檢
Hack 實戰(zhàn)——探究支付寶 App 手勢密碼
使用 Keychain-Dumper 導出 keychain 數(shù)據(jù)
數(shù)據(jù)擦除
Hack 實戰(zhàn)——解除支付寶 App 手勢解鎖錯誤次數(shù)限制
Objective-C 代碼混淆
阻止 GDB 依附
基于腳本實現(xiàn)動態(tài)庫注入
Hack 必備的命令與工具
鍵盤緩存與安全鍵盤
數(shù)據(jù)保護 API

Hack 實戰(zhàn)——探究支付寶 App 手勢密碼

在之前的 iOS安全攻防(七):Hack實戰(zhàn)——解除支付寶app手勢解鎖錯誤次數(shù)限制中,留了一個問題,就是如何破解手勢密碼。

方法不唯一,本文介紹如何利用 gdb 分析破解 App 。

當沒有程序源代碼的情況下,我們如何利用 gdb 呢?

為了確定應該如何設置斷點,不得不反匯編程序來作為參考了。

在前面的文章提到過,支付寶 app 的手勢密碼校驗處理非常嚴謹,沒有拋出 BOOL 判斷的方法讓我們可以直接修改返回值跳過驗證,而是將全部操作封在了

-(void)gestureInputView:(id)view didFinishWithPassword:(id)password; 

于是,我反匯編了支付寶 app ,找到手勢密碼解鎖的相關代碼片段:

http://wiki.jikexueyuan.com/project/ios-security-defense/images/guesture-password.png" alt="guesture-password" />

紅色箭頭標注的地方,讓人欣喜,這將是我們斷點位置的最好選擇。

首先,查看一下相關程序段符號表:

nm Portal | grep -i gestureinputview

得到結果:

nm Portal | grep -i getpassword

得到結果:

http://wiki.jikexueyuan.com/project/ios-security-defense/images/guesture-password2.png" alt="guesture-password2" />

確定了了關鍵函數(shù)的輸出符號。

啟動支付寶 app ,并 gdb 該進程: gdb -q -p 671

在上述兩個函數(shù)位置設置斷點: http://wiki.jikexueyuan.com/project/ios-security-defense/images/guesture-password3.png" alt="guesture-password3" />

可以通過 info breakpoints 查看斷點: http://wiki.jikexueyuan.com/project/ios-security-defense/images/guesture-password4.png" alt="guesture-password4" />

continue 到 getPassword 位置,打印函數(shù)棧: http://wiki.jikexueyuan.com/project/ios-security-defense/images/guesture-password5.png" alt="guesture-password5" />

我們可以確定了 getPassword 的返回地址是 0x00becb36 , 對該地址加斷點:

b * 0xbecb36

然后繼續(xù) continue ,程序將卡在上面的斷點上。

從上面的反匯編代碼,我們可以知道,用戶輸入的密碼為存在 r8 上,原始密碼為存在 r0 上,我們直接打印出這兩個寄存器的值:

http://wiki.jikexueyuan.com/project/ios-security-defense/images/guesture-password6.png" alt="guesture-password6" />

正確密碼是個 “Z” 手勢圖畫,而當前輸入為 “一” 手勢圖畫。 可以得出結論,支付寶 app 的手勢密碼和大多數(shù) app 一樣,手勢密碼格式是字符串,9 個點分別對應字符 123456789 。