逆向之-Cycript操作案例

一.Cycript的简单介绍

Cycript可以攻击iOS软件.它是一种介于Oc和JavaScript之间的编程语言. Cycript由JayFreeman(杰弗里曼)编写,他是iOS第三方工具的作者,包括Cydia软件安装器, Cydgets以及iOS的一个Java移植版.Cycript完全兼容JavaScript,你可以使用完整的JS语法来编写程序, 但同时可以直接操作OC语言的组件.简单来说Cycript高超地实现了目前所有的运行时操作技巧.

在已越狱的手机上,去Cydia商店里面下载安装Cycript.
cycript是混合了oc与js语法的一个工具, 让开发者在命令行下和应用交互,在运行时查看和修改应用

Snip20170615_1.png

二. 使用Cycript做三个案例

1.在手机上弹出提示框,截屏,改变桌面背景颜色

2.通过终端来改变手机上的应用界面

3.修改支付宝上面的文字

最后的效果如下:
支付宝效果.gif

1.通过ssh在MAC终端来登录你的手机

在登录越狱手机之前, 必须在你的iOS上面安装OpenSSH,OpenSSH同样可以在Cydia商店里面去进行下载进行安装. 它给外界就提供了一个通过SSH接入的远程登录.登录的具体操作,我们可以看下图的操作

iOS默认的端口是22, 本地端是2222
在电脑上安装usbmuxd,它里面自带iproxy这样一个小工具, 可以把手机上的端口号映射到我们的电脑上.打开两个终端.
第一个终端输入如下指令

先在第一个指令.png

第二个终端输入如下指令

终端连接手机.png

连接的时候,会默认提示要你输入密码ios的Root密码,它的一个默认密码是alpine.
完了之后,可以使用ps -e来查看进程ID

通过Cycript指令来注入进程,SpringBoard简单理解,是我们所能看到的iOS上面的东西,都属于SpringBoard里面.
然后弹框就这样简单的通过我们的终端实现了:

iPhone:~ root# cycript -p SpringBoard
cy# var alert = [[UIAlertView alloc] initWithTitle:'\u9006\u5411\u738b\u5c3c\u39b' message:'\u4ece\u5929\u800c\u964d\u7684\u738b\u5c3c\u739b' delegate:nil cncelButtonTitle:'\u662f\u738b\u5c3c\u739b' otherButtonTitles:nil]
#"<UIAlertView: 0x15fe91110; frame = (0 0; 0 0); layer = <CALayer: 0x1612e14d0>>"
cy# [alert show]

还有其它显示弹框的方式,通过地址调用来显示

cy# [#0x15fe91110 show]

接着就来通过终端对手机端进行截屏和改变桌面的背景颜色.可以一口气敲完

iPhone:~ root# cycript -p SpringBoard
cy# var shot = [SBScreenShotter sharedInstance]  // 赋值给shot
#"<SBScreenShotter: 0x15e5eb8f0>" //创建成功就会打印出地址
cy# [shot saveScreenshot:YES]  // 像oc那样直接调用就可以对显示屏进行截屏了
// 改变透明度和隐藏显示的操作
iPhone:~ root# cycript -p SpringBoard  // 如果上面已经注入了,这地方就没必要再写了,直接在终端操作下面的指令就行
cy# UIApp.keyWindow
#"<SBHomeScreenWindow: 0x15fa40f40; baseClass = UIWindow; frame = (0 0; 320 568); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x15fa22270>; layer = <UIWindowLayer: 0x15fa22070>>"
cy# screen = #0x15fa40f40
#"<SBHomeScreenWindow: 0x15fa40f40; baseClass = UIWindow; frame = (0 0; 320 568); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x15fa22270>; layer = <UIWindowLayer: 0x15fa22070>>"
cy# screen.hidden = YES   // 这条指令一回车桌面图标就隐藏了
true
cy# screen.hidden = NO
false
cy# screen.alpha = 0.5  // 改变桌面图标透明度
0.5
cy# screen.alpha = 0.2
0.20000000000000001
cy# screen.alpha = 1

// 以下是改变手机的背景色,效果可以看前面的gif效果图
cy# screen.backgroundColor = [UIColor redColor]
#"UIDeviceRGBColorSpace 1 0 0 1"
cy# screen.backgroundColor = [UIColor greenColor]
#"UIDeviceRGBColorSpace 0 1 0 1"
cy# screen.backgroundColor = [UIColor yellowColor]
#"UIDeviceRGBColorSpace 1 1 0 1"
cy# screen.backgroundColor = [UIColor blackColor]
#"UIDeviceWhiteColorSpace 0 1"


2.通过app的名字来注入进程,改变app的view,文字,和其它控件

原始的图.png
iPhone:~ root# cycript -p xiaoguo  // 注入进程
cy# 
// 打印当前的控制器
UIApp.keyWindow.rootViewController.visibleViewController  
#"<ViewController: 0x124645240>"
cy# viewC = #0x124645240
#"<ViewController: 0x124645240>"
cy# viewC.view
#"<UIView: 0x124538560; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x124536a60>>"
cy# view = #0x124538560
#"<UIView: 0x124538560; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x124536a60>>"
cy# view.recursiveDescription().toString()  // 使用递归的方式,打印出当前控制器的view里面的层级结构

递归的方式打印出来的层级结构图.png

在上图里面我们可以看到递归的方式打印出来了应用上面的所用控件.一个view两个label和一个button.

最后的效果是这样的.


最后的效果.png

3.修改支付宝上面的文字

iPhone:~ root# cycript -p AlipayWallet 
cy# UIApp.keyWindow.rootViewController.visibleViewController
#"<ALULoginNewcomerViewController: 0x1388d4290>"
cy# #0x1388d4290.view
#"<UIView: 0x1376f22d0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x13881c700>>"
cy# view = #0x1376f22d0
#"<UIView: 0x1376f22d0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x13881c700>>"
cy# view.recursiveDescription().toString()
...
cy# #0x138b1ab40.text
@"\xe8\x9a\x82\xe8\x9a\x81\xe9\x87\x91\xe6\x9c\x8d\xe6\x97\x97\xe4\xb8\x8b\xe5\x93\x81\xe7\x89\x8c"

// 改了支付宝上面的问题,这些编码是unicode转化的,可以打印出问题
cy# #0x138b1ab40.text = '\u7a77\u5f97\u53ea\u5269\u4e0b\u94b1\u4e86\u002cu0020\u771f\u4e0d\u597d\u610f\u601d'

// 最后是修改UITextField, 可以打印出应用里面使用textField做的控件信息
cy# choose(UITextField)

// 这里打印的信息省略了
[#"<UITextField: 0x128a6c2a0; frame = (9 0; 302 30); text = ''; clipsToBounds = YES; opaque = NO;  .........]

// 拿到地址之后,直接改变文字就行
cy# #0x128b35680.text = '\u5f20\u4e09'
"\u5f20\u4e09"
cy# #0x128b35680.text = '\u674e\u56db'
"\u674e\u56db"
cy# #0x128b77380.text = '12345678'
"12345678"

// 设置密码是否显示或者隐藏
cy# #0x128b77380.secureTextEntry = YES
true
cy# #0x128b77380.secureTextEntry = NO
false

支付宝里面的原理跟第二个案例是一样的,打印出当前控制器上面的view中控件.

递归的方式打印出的控件结构图.png
最后的结果.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容