逆向之 Cycript 简单使用

Cycript的使用方法

  • Cycript的开启和关闭
    • 开启
    1. cycript
      cy#

    2. cycript -p 进程ID

    3. cycript -p 进程名称

注意:这几个操作都是开启操作,不可以同时进行,需要退出Cycript(control + D),才可以执行不同的指令

安装 App

MonkeyDev 这里有详细的说明 https://github.com/AloneMonkey/MonkeyDev/wiki/

刚注意到前天的 GitHub 被收购的消息,
微软正在收购GitHub
https://blog.github.com/2018-06-04-github-microsoft/

安装好 APP ,就可以使用 Cycript 调试。

  • 常用语法

连接手机:

cycript -r 192.168.1.213:6666
ip + port,默认的端口就是6666,不进入cycript 环境连接。

当前应用对象:UIApp[UIApplication sharedApplication]

定义变量:var 变量名 = 变量值
如:var keyWin = UIWindow.keyWindowvar keyWin = UIApp.keyWindow
但是我的 var keyWin = UIWindow.keyWindow 定义报错:

image.png

获取内存对象: keyWin.rootViewController
*"#"<QMSideMenuViewController: 0x109e23810>" *

通过内存地址获取对象:#0x109e23810
#"<QMSideMenuViewController: 0x109e23810>"

访问对象的属性:#0x109e23810.view
#"<UIView: 0x109b2d8c0; frame = (0 0; 375 667); autoresize = W+H; gestureRecognizers = <NSArray: 0x1c0640e70>; layer = <CALayer: 0x1c44271e0>>"

获取加载的所有OC类:ObjectiveC.classes (会崩溃)

获取对象的所有成员变量:*变量名称
eg: *keyWin

{
    isa: CPMotionRecognizingWindow,
    _hasOverrideClient: 0,
    _hasOverrideHost: 0,
    _hasInputAssistantItem: 0,
    _constraintsExceptingSubviewAutoresizingConstraints: @[],
    _cachedTraitCollection: null,
    _layer: # "<UIWindowLayer: 0x1c4426da0>",
    _layerRetained: # "<UIWindowLayer: 0x1c4426da0>",
    _enabledGestures: 0,
    _gestureRecognizers: @[#"<_UISystemGestureGateGestureRecognizer: 0x1c41c4740; state = Possible; delaysTouchesEnded = NO; view = <CPMotionRecognizingWindow 0x109b2c7e0>>", #"<_UISystemGestureGateGestureRecognizer: 0x1c41c4830; state = Possible; delaysTouchesBegan = YES; delaysTouchesEnded = NO; view = <CPMotionRecognizingWindow 0x109b2c7e0>>"],
    _window: null,
    _subviewCache: @[#"<UIView: 0x109b2d8c0; frame = (0 0; 375 667); autoresize = W+H; gestureRecognizers = <NSArray: 0x1c0640e70>; layer = <CALayer: 0x1c44271e0>>"],
    _templateLayoutView: null,
    _charge: 0,
.....
}

遍历打印某个视图的子控件:[变量名 recursiveDescription].toString()
如:[[UIApp keyWindow] recursiveDescription].toString()

< CPMotionRecognizingWindow: 0x109b2c7e0;
baseClass = UIWindow;
frame = (0 0; 375 667);
autoresize = W + H;
gestureRecognizers = < NSArray: 0x1c465f1a0 > ;
layer = < UIWindowLayer: 0x1c4426da0 >>
    |
    < UIView: 0x109b2d8c0;
frame = (0 0; 375 667);
autoresize = W + H;
gestureRecognizers = < NSArray: 0x1c0640e70 > ;
layer = < CALayer: 0x1c44271e0 >>

......

在内存里查找某个类型的对象:choose(类名)
如 choose(UITableViewCell)

简单使用.png
image.png
  • 快捷键

取消输入:Ctrl + C
退出:Ctrl + D
清屏:Command + R

Cycript 小练习

安装完 WeChat 后,进入 Cy 环境。

修改任意你想修改的内容, 输入代码后回车 即可注入

/** 显示通知个数 */
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:666666] 
/** 隐藏状态栏 */
 [[UIApplication sharedApplication] setStatusBarHidden:YES]

// 修改转账的金额
1. choose(UILabel)
2. Command + F -> 金额 -> 获取控件内存地址
3.  # 0x11c159340.text = '88888888'
    #0x13baab450.textColor = [UIColor orangeColor]
    #0x13baab450.adjustsFontSizeToFitWidth = YES
OK , 搞定!!!
IMG_5BF0F9C0AFA9-1.jpeg
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • iOS逆向必备工具: IDAPro--逆向工程师的生命MachOView--查看MachO文件格式信息iOS-ap...
    hello_iOS程序媛阅读 1,420评论 0 3
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,559评论 1 32
  • ios 逆向工程 刚进一个新公司,公司的大牛直接分给一个课题研究任务,直接懵逼了,/(ㄒoㄒ)/~~ 想哭,世界就...
    天下林子阅读 29,905评论 39 120
  • ⑴ 信息超载 互联网时代,信息量更加爆棚,而我们也习惯不断获取新事物,一方面是新奇的心理,另一方面更是担心遗漏信...
    卓安安阅读 280评论 2 5
  • 我听见风的声音 我听见雨的声音 很好听呀 可是 还是不如你的声音呢 是谁在轻吟 是谁在轻舞 人海匆匆茫茫 我与你擦...
    司空漓澄阅读 155评论 0 0

友情链接更多精彩内容