使用Cycript修改支付宝app运行时
Cycript: Objective-JavaScript ,它懂Objective-C,也懂javascript。
我们能够借助Cycript使用Objective-C或者javascript ,给某个正在运行的进程的runtime发送消息。
我们能够借助Cycript使用Objective-C或者javascript ,给某个正在运行的进程的runtime发送消息。
本文以修改支付宝app界面为例,介绍
Cycript的使用方法。
1)安装Cycript
到
Cycript官方网站下载资源工具,然后推进已越狱的iPhone中,进行安装:
- dpkg -i cycript_0.9.461_iphoneos-arm.deb
- dpkg -i libffi_1-3.0.10-5_iphoneos-arm.deb
2)确定支付宝进程
运行支付宝app,然后获取它的进程号:
- 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
3)Cycript钩住支付宝进程
- Primer:/ root# cycript -p 479
- cy#
4)获取当前界面的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"
当然,只是修改个背景色好没意思……
想修改更多信息,还得介绍一下另一个利器: class-dump 。下篇再总结~