Cycript

Cycript允许开发人员在iOS或Mac OS X上使用objective – c++和JavaScript语法的混合工具来探索和修改运行的应用程序,通过一个具有语法高亮和标签完成功能的交互式控制台。
(它还在Android和Linux上独立运行,并提供对Java的访问)

1.Cycript安装

官网下载: http://www.cycript.org/

把下载的cycript_0.9.594*.zip 解压放到/opt/ 目录下,然后执行下命令 (cycript_0.9.594换成下载的版本名)

但是可能会出现这个问题

dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
Referenced from: /opt/cycript_0.9.594/./Cycript.lib/cycript-apl
Reason: image not found
[1] 14883 abort ./cycript

解决:这错误是mac上的ruby版本过高导致,查看下mac上的ruby版本

在2.3基础上复杂一份叫2.0就行,命令如下:

使用和不使用sudo或切root问题还是出来了

mkdir: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/: Operation not permitted

以下这些路径不能直接修改的

输入命令 csrutil status 打印的是 System Integrity Protection status: enabled.

这个是在 OS X El Capitan 中有一个跟安全相关的模式叫 SIP(System Integrity Protection ),它禁止让软件以 root 身份来在 Mac 上运行,在升级到 OS X 10.11 中或许你就会看到部分应用程序被禁用了,这些或许是你通过终端或者第三方软件源安装。对于大多数用户来说,这种安全设置很方便,但是也有些开发者或者高级 Mac 用户不需要这样的设置。https://developer.apple.com/videos/play/wwdc2015/706/

这是由于Mac的rootless机制,可以进入恢复模式关闭rootless机制:

解决:

1、重启mac,按command+R进入恢复模式

2、选择终端,在左上角,输入指令:

3、重启后让机器正常启动,可以在终端查看rootless状态:

正常情况下rootless已经关闭。

4、要想重新开启rootless机制,参照步骤1,输入指令:

这些弄完后,再从文章开头从新开始吧~


bash_profile配置

在每次打开终端只有指定/opt/cycript_0.9.594/才能找到cycript,这样非常的不方便。

终端直接执行

在.bash_profile最下面添加这个

如果你使用的是zsh, 在每次打开zsh会调用~/.zshrc, 在这里最下加入

这样不管是bash还是zsh都能在终端直接输入cycript


2.SSH连接

iOS下有2个用户

  • mobile  (/var/mobile)
  • root (权限最大 /var/root/)

a) wifi连接:在同一局域网内,终端 (yourIphoneIP你手机上ip)

但是在连接时可能ssh连接不上

ssh: connect to host yourIphoneIP port 22: Connection refused

解决:把手机上的OpenSSH删了,重新安装,然后选择yes,默认密码是alpine

进入后最好修改下密码,输入passwd输入2次新的密码就行了

b) USB连接:

如果没brew就执行

然后打开终端 (手机上默认是是22,电脑端4位,可以输入没被占用的端口,把手机上的端口映射到电脑上)

*还有个就是基于usbmuxd写的脚本映射   https://github.com/macRong/usbLogin


3.安装软件包管理工具

可能会出现的问题:

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package <package>

解:执行

然后在去安装一些你常用的工具包,比如:

也可以用关键字搜索

如果发现找不到软件包,更新所有的源

在Cydia商店搜cycript安装,或


4.通过查看进程注入

cycript -p WeChat 要打开微信(在运行状态)


5.Cycript用法

1. #用法 (获取指针对象信息)

2.*用法 (获取sview的成员变量)

3.遍历子对象

4.choose()  (判断在内存上是否有指定的view)

5.获取view的树目录结构

发表回复

电子邮件地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud