前言
Cycript是一个集成了Objective-C、JavaScript、Java等多种语法的调试工具,可以用来调试正在运行的 APP。
image.png
越狱手机通过Cydia安装Cycript,可以在iPhone上调试运行中的APP,是不是很牛X ?
image.png下载SDK,还有说明文档。
Cycript 安装
下载SDK ,拖入opt目录下,我的是没有这个目录,新建的。(如果安装过 MonkeyDev 的话是自动生成的)
- 配置默认的 .bash_profile
编辑完成,保存退出。
(注意:路径加上 "",PATH 后多个环境变量$开头,用:隔开. 另外,Vim 命令不熟悉可以参考一下 https://www.jianshu.com/p/5f39f5fb944d,其实我也在熟悉学习中,比较不太适应,据说用好了熟练了就会很省事行云流水,暂时还没感觉到,如果实在不适应的话其实也可以用其它的文本编辑器来编辑)
- 退出, 然后重新 加载 .bash_profile
$ source .bash_profile
因为之前安装好之后,把 Zsh 设置为当前用户的默认 Shell(这样新建标签的时候才会使用 Zsh):
$ chsh -s /bin/zsh
(注:所以现在加载的是 .zshrc
-> 需要重新加载默认的 .bash_profile
->source .bash_profile,但是又一个问题是:环境变量是配置在 .bash_profile
中的,下次打开ITem2 的时候需要重新加载,省事方便的办法是在 .zshrc
的末尾加上 source .bash_profile
就不用手动加载了)
- 顺便提一下,加载脚本的几种方式:
-
sh + 脚本名称
(sh是zsh的缩写) bash 脚本名称
-
source 脚本名称
或者. 脚本名称
- 输入 $ cycript ,看是否成功。
如果终端输出cy#
就代表成功了,可惜我的并没有成功,报错如下:
dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib Referenced from: /opt/cycript_0//Cycript.lib/cycript-apl Reason: image not found [1] 1897 abort cycript
原来是 Ruby 的版本过高导致的,输入 Ruby -v
查看版本号,我的是:
ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
这时,我们需要给 Ruby 降版本,
- 关闭 SIP
System Integrity Protection: 系统完整性保护机制;苹果从 OS 10.11 开始引入了一项保护机制 System Integrity Protection,目的是帮助普通用户避免恶意 app 通过用户授权的方式获得所有系统权限。
- 电脑重启按住
Command+R
,进入恢复模式- 菜单“实用工具” ==>> "终端" ==>> 输入 csrutil disable 回车
执行成功后,返回信息如下:
Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.
- 这样,更改的配置保存到NVRAM中,对整台机器生效,重新启动即可
如果想打开SIP,重复上两步,命令改为csrutil enable
如何查看SIP系统完整性保护机制?
命令行终端
$ csrutil status
System Integrity Protection status: enabled.
$ csrutil clear / enable / disable 只能在 恢复模式下使用
在禁用掉SIP后,查看状态信息如下
$ csrutil status
System Integrity Protection status: disabled.
-
替换低版本 Ruby
- sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/
- sudo ln -s /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
终于大功告成,作为一个逆向的小菜,安装历程,颇具艰辛,着实不太容易啊!坚持不易
注:根据每个人ruby版本不同,将上面第二条命令的/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib中的2.3改成本机的ruby版本。
这里不是降级ruby,只是复制一份2.0的ruby的dylib,让cycript运行起来。
可以参考这篇文章:https://www.cnblogs.com/WinJayQ/p/8886978.html#undefined
网友评论