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

使用 Cycript 修改支付寶 App 運(yùn)行時(shí)

Cycript: Objective-JavaScript ,它懂 Objective-C,也懂javascript 。

我們能夠借助 Cycript 使用 Objective-C 或者 javascript ,給某個(gè)正在運(yùn)行的進(jìn)程的 runtime 發(fā)送消息。

本文以修改支付寶 app 界面為例,介紹 Cycript 的使用方法。

安裝 Cycript

到 Cycript 官方網(wǎng)站下載資源工具,然后推進(jìn)已越獄的 iPhone 中,進(jìn)行安裝:

dpkg -i cycript_0.9.461_iphoneos-arm.deb  
dpkg -i libffi_1-3.0.10-5_iphoneos-arm.deb 

確定支付寶進(jìn)程

運(yùn)行支付寶 app,然后獲取它的進(jìn)程號(hào):

Primer:/ root# ps aux | grep Portal  

mobile     479   0.6  4.3   590776  44956   ??  Ss    5:14PM   0:09.58 /var/mobile/Applications/8723004E-9E54-4B37-856D-86292780E958/Portal.app/Portal  
root       497   0.0  0.0   329252    176 s000  R+    5:21PM   0:00.00 grep Portal  

Cycript 鉤住支付寶進(jìn)程

Primer:/ root# cycript -p 479  
cy#

獲取當(dāng)前界面的 viewController 并修改背景色

cy# var app = [UIApplication sharedApplication]  
@"<DFApplication: 0x16530660>"  

cy# app.delegate  
@"<DFClientDelegate: 0x165384d0>"  

cy# var keyWindow = app.keyWindow  
@"<UIWindow: 0x1654abb0; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x1654b190>; layer = <UIWindowLayer: 0x1654ace0>>"  

cy# var rootController = keyWindow.rootViewController  
@"<DFNavigationController: 0x1654b6c0>"  

cy# var visibleController = rootController.visibleViewController  
@"<ALPLauncherController: 0x166acfb0>"  

cy# visibleController.childViewControllers  
@["<HPHomeWidgetGroup: 0x166afbc0>","<ADWRootViewController: 0x165745c0>","<ALPAssetsRootViewController: 0x16577250>","<SWSecurityWidgetGroup: 0x166bd940>"]  

cy# var assetsController = new Instance(0x16577250)  
@"<ALPAssetsRootViewController: 0x16577250>"  

cy# assetsController.view.backgroundColor = [UIColor blueColor]  
@"UIDeviceRGBColorSpace 0 0 1 1" 

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

當(dāng)然,只是修改個(gè)背景色好沒(méi)意思……

想修改更多信息,還得介紹一下另一個(gè)利器: class-dump 。下篇再總結(jié)~