Cycript: Objective-JavaScript ,它懂 Objective-C,也懂javascript 。
我們能夠借助 Cycript 使用 Objective-C 或者 javascript ,給某個(gè)正在運(yùn)行的進(jìn)程的 runtime 發(fā)送消息。
本文以修改支付寶 app 界面為例,介紹 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
運(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
Primer:/ root# cycript -p 479
cy#
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é)~