iOS 逆向编程(十六)DZMCycript 脚本使用(封装了常用的快捷函数,后续会继续添加)(1)

$ scp -P 10010 /Users/dengzemiao/Desktop/GitHub/DZMCycript/DZMCycript.cy root@localhost:/usr/lib/cycript0.9

3、文件导入到手机之后,进入手机终端,之前文章有封装 SSH 免密登录的

dengzemiaodeMacBook-Pro:ssh dengzemiao$ sh login.sh

iPhone:~ root#

4、通过 Cycript 监听软件进入调试环境,并导入 DZMCycript 脚本

// 监听进入调试环境

iPhone:~ root# sycript -p neteasemusic

// 导入脚本成功

cy# @import DZMCycript

{}

// 使用脚本

cy# DZMAppId

@“com.netease.cloudmusic”

cy# DZMFrontVc()

#“<NMSettingTabViewController: 0x118a337a0>”


下面都是介绍一些方法的使用,会用可以不用看!!!。


二、DZMFrontVc() DZMRectMake(x, y, w, h) 测试:在任意APP上添加UI视图

// 进入软件监听调试环境

iPhone:~ root# cycript -p neteasemusic

// 导入 DZMCycript

cy# @import DZMCycript

{}

// 获取当前最上层控制器(如果有控制器嵌套什么的这个需要自己注意,可以通过脚本里面或者自己 iOS 的代码获取到当前控制器,如果不嵌套一般都是可以正常获取到的)

cy# DZMFrontVc()

#“<NMPhoneLoginViewController: 0x10a968340>”

// 添加一个红色 View 到软件页面上

// 创建 redView

cy# var redView = [[UIView alloc] initWithFrame:DZMRectMake(50, 50, 100, 100)]

#“<UIView: 0x114f3bef0; frame = (50 50; 100 100); layer = <CALayer: 0x280c718c0>>”

// 设置颜色

cy# redView.backgroundColor = [UIColor redColor]

#“UIExtendedSRGBColorSpace 1 0 0 1”

// 添加到当前控制器 View 上显示

cy# [#0x10a968340.view addSubview: redView]

三、DZMLoadFramework(name) 测试:动态给软件添加系统库
  • 比如我们要给一个 APP 添加上地图,但是 APP 没有导入地图库 MapKit.framework,那么也就不能使用地图对象 MKMapView 去创建地图,如果不导入库直接创建使用地图对象会报错的。

  • 通过 DZMCycript 脚本动态导入库,并使用,其实跟 iOS 开发是一样的

// 进入软件监听调试环境

iPhone:~ root# cycript -p neteasemusic

// 导入 DZMCycript

cy# @import DZMCycript

{}

// 获取当前控制器

cy# DZMFrontVc()

#“<NMPhoneLoginViewController: 0x1121d5d20>”

// 导入 MapKit 库,字符串即可

cy# DZMLoadFramework(‘MapKit’)

#“NSBundle </System/Library/Frameworks/MapKit.framework> (loaded)”

// 创建 MapView

cy# var mapView = [[MKMapView alloc] initWithFrame: DZMRectMake(50, 50, 100, 100)]

#“<MKMapView: 0x10b3c5c00; frame = (50 50; 100 100); clipsToBounds = YES; layer = <CALayer: 0x280cd9c20>>”

// 添加到当前控制器 View 上显示地图

cy# [#0x1121d5d20.view addSubview: mapView]

四、DZMInstanceMethodNames(className, reg) 测试:获取指定对象里面有哪些对象方法,这样我们就可以拿到任何对象里面的方法,这样不就可以随便手动调用了

文末

从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。

个人将这段时间所学的知识,分为三个阶段:

第一阶段:HTML&CSS&JavaScript基础

第二阶段:移动端开发技术

第三阶段:前端常用框架

  • 推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;

  • 大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值