逆向1(Cycript使用简介)

准备工作

1.openSSH 安装
越狱iPhone 使用Cydia 搜索 openSSH,安装即可。

  • SSH 连接越狱iPhone两种方式
    <1> WiFi 无线连接
1) 手机和Mac电脑在同一网络下。
2) 在设置里找到iPhone的ip
3) mac终端里输入 ssh root@192.168.0.102
注意:
1.如果是第一次连接的话,输入yes按回车即可
2.然后输入密码,这里的密码是SSH的密码,而不是你电脑的密码,默认是alpine
3.出现你的手机名字:~root# 就代表连接成功了
4.第一次连接后建议大家把默认密码修改了,修改密码的命令是 passwd。输入2次新密码既可修改

<2> USB连接(比WIFI响应速度快,网络环境无限制)
usbmuxd是网上开源社区,貌似是国外牛人倾力打造的一个专门针对该功能开源库)

1> 通过Homebrew来安装,没有安装brew的[看这里](http://www.jianshu.com/p/d69a23d20b8e))
brew install usbmuxd
2>usbmuxd 自带工具iproxy,iproxy 可以快捷的操作连接iPhone等操作。由于Mac上只支持4位的端口号,所以需要把iPhone的默认端口22映射到Mac上,相当于建立一个Mac和iPhone之间的通道。
iproxy 2222 22
以上命令就是把当前连接设备的22端口(SSH端口)映射到电脑的2222端口,那么想和设备22端口通信,直接和本地的2222端口通信就可以了。
3) 终端提示 waiting for connection ,表示这两个端口之间已经可以通信了,保留当前终端(如果关闭就停止端口之间的通信了),新建另一个终端输入,默认密码:alpine (如果你刚开始修改了密码,就用修改的那个密码)
ssh -p 2222 root@127.0.0.1

2.安装软件包管理工具apt-get
在Cydia中搜索 APT 0.6 Transitional并安装

apt-get install  packagename         【安装软件包】
//下面这些命令都是在openssh里面用的
比如下面一些常用的
apt-get install syslogd
apt-get install  ping
apt-get install  ps
apt-get install  find 
apt-get install  tcpdump
//如果不知道软件包名称,也可以用关键字搜索
apt-cache search traceroute
如果发现找不到软件包,先 apt-get update,更新所有的源
Cycript的简介

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

Cycript安装方式
  1. 去Cydia商店里面下载安装Cycript.
  2. apt-get install cycript
Cycript使用

1.SpringBoard 使用
我们所能看到的iOS上面的东西,都属于SpringBoard里面.

下面演示几个例子

首先进入SpringBoard
iPhone:~ root# cycript -p SpringBoard
1.截屏
cy# var shot = [SBScreenShotter sharedInstance]
#"<SBScreenShotter: 0x13790a7e0>"
cy# [shot saveScreenshot:YES]
2.隐藏桌面
cy# UIApp.keyWindow
#"<SBHomeScreenWindow: 0x1308f14b0; SpringBoard-0x1308f14b0-3; baseClass = UIWindow; frame = (0 0; 320 568); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x1308dc370>; layer = <UIWindowLayer: 0x1308ccb40>>"
//可以通过地址调用 也可以将地址赋值给变量
cy# screen = #0x1308f14b0 
#"<SBHomeScreenWindow: 0x1308f14b0; SpringBoard-0x1308f14b0-3; baseClass = UIWindow; frame = (0 0; 320 568); clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x1308dc370>; layer = <UIWindowLayer: 0x1308ccb40>>"
cy# screen.hidden = YES
true
cy# screen.hidden = NO
false
// 改变手机的背景色
cy# screen.backgroundColor = [UIColor redColor]
#"UIDeviceRGBColorSpace 1 0 0 1"
3. 弹框
cy# var alert =[[[UIAlertView alloc]initWithTitle:@"Title" message:@"Hello World" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil] show]
cy# 
  1. 通过app的名字来注入进程
1.确认进程名或者进程PID
//查看所有进程
iPhone:~ root# ps -e 
//查看单个,比如微信
iPhone:~ root# ps -e | grep WeChat 

2.注入
//方式1  名字
iPhone:~ root# cycript -p WeChat
cy#
//方式2 进程ID
iPhone:~ root# cycript -p 1751  
cy#

3.退出cycript
Control+D
  1. 注入微信
// 打印当前的控制器(如果没反应也可以用下面的)
UIApp.keyWindow.rootViewController.visibleViewController  
#"<ViewController: 0x124645240>"
//获取当前控制器
iPhone:~ root# cycript -p WeChat  
cy# function currentVC() {
       var app = [UIApplication sharedApplication]  
           var keyWindow = app.keyWindow  
               var rootController = keyWindow.rootViewController  
                   var visibleController = rootController.visibleViewController  
                       if (!visibleController){
                              return rootController
                                  }
                                      return visibleController.childViewControllers[0]
                                      }
cy# var vc = currentVC()
#"<WCAccountLoginFirstViewController: 0x160073400>"
cy# viewC = #0x160073400
#"<WCAccountLoginFirstViewController: 0x160073400>"
//找到控制器下的view
cy# viewC.view
#"<UIView: 0x161272fa0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x161272e60>>"
cy# view = #0x161272fa0
#"<UIView: 0x161272fa0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x161272e60>>"
//打印视图的层级结构
cy# view.recursiveDescription().toString()
`<UIView: 0x161272fa0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x161272e60>>
  | <UIView: 0x161273110; frame = (0 0; 320 633); autoresize = W; layer = <CALayer: 0x161273280>>
  |    | <UIImageView: 0x161274990; frame = (0 0; 320 568); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x161274660>>
  | <UIView: 0x161274bf0; frame = (0 483; 320 65); autoresize = W+TM; layer = <CALayer: 0x161274d60>>
  |    | <FixTitleColorButton: 0x1612751a0; baseClass = UIButton; frame = (20 18; 130 47); clipsToBounds = YES; opaque = NO; autoresize = RM; layer = <CALayer: 0x161275700>>
  |    |    | <UIButtonLabel: 0x161308210; frame = (47 13; 36 21.5); text = 'fuck'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x161104ad0>>
  |    | <FixTitleColorButton: 0x1612771c0; baseClass = UIButton; frame = (170 18; 130 47); clipsToBounds = YES; opaque = NO; autoresize = LM; layer = <CALayer: 0x1612774a0>>
  |    |    | <UIButtonLabel: 0x161277cb0; frame = (47 13; 36 21.5); text = '\u6ce8\u518c'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x161277ec0>>
  |    |    |    | <_UILabelContentLayer: 0x15ff58c00> (layer)
  | <UIButton: 0x161278ce0; frame = (234 0; 86 49); opaque = NO; autoresize = LM; layer = <CALayer: 0x15fee7ca0>>
  |    | <UIButtonLabel: 0x1612791a0; frame = (15 16; 56 17); text = '\u7b80\u4f53\u4e2d\u6587'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x1612793b0>>
  |    |    | <_UILabelContentLayer: 0x15ffe56d0> (layer)`
//修改按钮上的内容
cy#  #0x1612791a0.text = @"socket"
//可以打印出应用里面使用textField做的控件信息
cy# choose(UITextField)
[#"<WCUITextField: 0x14f02d7d0; baseClass = UITextField; frame = (20 0; 290 44); text = ''; clipsToBounds = YES; opaque = NO; tintColor = UIDeviceRGBColorSpace 0.00784314 0.733333 0 1; gestureRecognizers = <NSArray: 0x14f27c7a0>; layer = <CALayer: 0x14f059ef0>>",#"<WCUITextField: 0x14f044260; baseClass = UITextField; frame = (20 0; 280 44); text = '\xe4\xb8\xad\xe5\x9b\xbd'; clipsToBounds = YES; opaque = NO; tintColor = UIDeviceRGBColorSpace 0.00784314 0.733333 0 1; gestureRecognizers = <NSArray: 0x14f12f990>; layer = <CALayer: 0x14f0a8170>>",#"<WCUITextField: 0x14f0873c0; baseClass = UITextField; frame = (20 0; 73 44); text = '+86'; clipsToBounds = YES; opaque = NO; tintColor = UIDeviceRGBColorSpace 0.00784314 0.733333 0 1; gestureRecognizers = <NSArray: 0x14f09d5c0>; layer = <CALayer: 0x14f0688a0>>",#"<WCUITextField: 0x14f262e80; baseClass = UITextField; frame = (10 0; 197 44); text = ''; clipsToBounds = YES; opaque = NO; tintColor = UIDeviceRGBColorSpace 0.00784314 0.733333 0 1; gestureRecognizers = <NSArray: 0x14f27ad80>; layer = <CALayer: 0x14f01e470>>"]
//修改文字
cy# #0x14f0873c0.text = @"countryCode"
@"countryCode"
// 设置密码是否显示或者隐藏
cy# #0x14f262e80.secureTextEntry = NO
false
//注意YES
cy# #0x14f262e80.secureTextEntry = yes
throw new ReferenceError("Can't find variable: yes")
cy# #0x14f262e80.secureTextEntry = YES
true
cy#
注意

如果全是中文,我们可以编码转换为UNICODE后,直接搜索UNICODE编码。推荐一个转换编码的网址:http://tool.chinaz.com/Tools/Unicode.aspx

scp命令使用

1. 将iphone上的文件拷贝到mac上
scp 手机上文件路径 mac用户名@mac ip:mac文件地址
例子:将手机上tmp目录下的libETL.log拷贝到mac桌面testing文件夹下
iPhone:/tmp root# scp /tmp/libETL.log zl@192.168.0.102:/Users/zl/Desktop/testing
注意:
(1)mac用户名 终端用who查看
(2)输入的密码是mac管理员的密码
2. 将mac上的文件拷贝到iphone上
例子:将mac tmp目录下的test.txt拷贝到mac桌面tmp文件夹下
iPhone:/tmp root# scp zl@192.168.0.102:/tmp/test.txt .
注意事项

如果连接不上,在Mac 终端输入命令ssh localhost得到
ssh: connect to host localhost port 22: Connection refused
解决方法是选择系统偏好设置->选择共享->点击远程登录
然后再输入命令ssh localhost发现已经解决问题

补充一波mac终端快捷键

Command + K             清屏
Command + T             新建标签
Command +W              关闭当前标签页
Command + S             保存终端输出
Command + D             垂直分隔当前标签页
Command + Shift + D     水平分隔当前标签页
Command + shift +  {或} 向左/向右切换标签

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

推荐阅读更多精彩内容

  • 工具 class-dump 用来提取已经砸过壳的 app 的头文件 下载地址 http://stevenygard...
    辉g_9274阅读 2,573评论 1 7
  • [TOC] ==iOS逆向环境介绍== *** 越狱环境:iphone5s iOS 8.3*** 1.Drawin...
    锦鲤跃龙阅读 1,375评论 2 2
  • #iOS-Jailbearking-Study ##iOS越狱学习 iOS越狱就是发现iOS设备硬件或者软件的漏洞...
    XLsn0w阅读 460评论 0 0
  • 飞戈飞于16年7月1日 人才是什么?能解决问题的是人才.能策划战略的是人才.能连接起不同点的是人才.能设计产品的是...
    飞戈飞阅读 180评论 0 0
  • 复习着复习着 反正今天的复习很糟糕就是了 第一次玩简书。觉得自己好像开辟了太多的小天地,这样不好。 看见慧莹的朋友...
    黄芒果阅读 220评论 0 0