前言
一开始想到这个功能的时候是因为Hank老师在我的微信公众号(alonemonkey)里面问了一个问题:
越狱设备
在越狱设备上面,可以将自己的脚本放到/usr/lib/cycript0.9/
下面,然后通过@import xxx
来导入即可使用自定义脚本里面封装的一些函数,极为方便。比如其自带的/usr/lib/cycript0.9/com/saurik/substrate/MS.cy
就可以通过@import com.saurik.substrate.MS
来导入这个模块,同样也可以放入一些自己的脚本来导入。那么在非越狱环境怎么去解决使用自定义脚本的问题呢?
非越狱设备
其实非越狱设备实现这个很简单,只要让cycript能找到我们自己的脚本所在的位置就行了,修改libcycript.cy
文件的require.resolve
函数,使其从当前应用目录或者沙盒目录里面去查找脚本,然后程序从网络下载脚本保存到沙盒目录就可以了,修改部分如下:
1 | require.resolve = function(name) { |
然后笔者在MonkeyDev的模块中增加了一个文件用于配置下载脚本的名字以及url:
key是脚本导入时候的名字,value是脚本所在的url,程序启动会自动下载脚本保存在Document的目录下面,然后在终端通过如下方式导入使用即可:
1 | ➜ cycript_0.9.594 ./cycript -r 192.168.2.248:6666 |
当时在本地的脚本可以拷贝到Frameworks的目录下面:
然后通过@import new
就可以导入使用了,是不是很方便!
总结
其实这个功能实现确实很简单,但是目前还没有把里面带的MS.cy弄进来,后面看看再弄吧。