cycript是什么?
cycript是objc++、javascript、java等语言的混合物,可以用来调试 探索 修改正在运行的ios、mac的app。
我们要调试我们app,首先需要手机越狱,至于怎么越狱以及需要安装什么源我在上一篇文章都有讲到,查看一下就知道了。这里我们需要安装的软件如下:
image.png
和这个插件
image.png
当然默认安装了第一个插件之后就会自动的安装第二个插件,这个插件是jay Freeman开发的,所以放心使用,因为这个人开发的都是神器。
cycript的开启和关闭
- 开启
我们需要做的是连接上我们的越狱手机(用usb进行连接),然后执行我们写好的那两个shell文件(在我的上一篇文章中有写到关于shell),我们就可以用我们的mac来通过命令来控制我们的手机了。接下来我们需要通过ps来查看一下我们当前的手机有哪些进程,通过使用命令配合进程的id或者进程的名称我们就可以进入当前我们需要调试的app。
具体命令如下: - 列出所有的进程
(特别需要注意的是:你需要将你的app打开,否则是显示不出来你的进程app的,本人因为这个错误折腾了一天)
ps -A
或者
ps aux
- 关键字列出进程
ps -A | grep 关键字
- 开启cycript
(你调试那个app就需要将这个app放在前台运行 否则会一直卡住不动)
cycripy -p 进程的id
或者
cycript -p 进程名称 (一般用这个不会发生改变,但是进程的id可能会发生改变)
- 取消输入
ctrl + C
- 退出
ctrl + D
- 清屏
ctrl + R
常用语法
image.pngimage.png
封装cycript的库
我们可以看到cycript是非常麻烦的,高手给我们封装好了一个库,那么我们就可以将封装好的库导入到我们需要的位置进行展示,库在哪里?
在这个位置:https://github.com/CoderMJLee/mjcript
我们使用命令将这个文件导入到我们的手机中,然后导入进行使用,比如:
我们使用命令:
scp -P 10010 .cy文件路径 root@localhost:/usr/lib/cycript0.9 路径下
然后我们按照上边的命令进行展示:
image.png
可见我们已经把springBoard进行展示出来 ,并且打印了一些信息了。
-
怎样封装呢?
1.首先我们使用subline text这个工具点击右下角选择javascript这个工具
image.png
然后我们输入,固定格式
image.png
接下来我们配合我们的oc和js的相关的语法进行完成。 - 注意点:
1.其中有等号的需要加上分号。
2.方法需要加上大括号。
3.当我们写好我们的.cy文件,我们需要将我们当前调试的app杀死,其次执行我们远程拷贝文件的命令,然后我们再次打开我们要调试的app,然后在重新导入文件,输入命令进行相关的调试。
关于Cycript的路径问题
我们一般拷贝的话 我们直接将我们的.cy文件直接放到/usr/lib/cycript0.9这个路径下,其实我们可以看jay Freeman 这个作者他是自己创建了文件夹将自己写的.cy文件放到了这个文件夹
image.png
其实如果按照正规来讲我们也需要将我们的文件放到一个特殊的文件夹下来执行。比如我可以这么放,我执行这个命令
scp -P 10010 ~/Desktop/mjcript/mjcript.cy root@localhost:/usr/lib/cycript0.9/DG/
注意:我首先用ifunbox创建了一个DG文件夹,如果不自己创建我们这个命令是不能自动创建的,那么接下来怎么引用呢,我以网易云音乐为例,用图片的方式展示了:
image.png
关于mjcript怎么使用
第一参考李明杰老师的github简介,第二的我们可以用subline text打开它,直接看里边的方法
比如我截取其中的一部分:
MJLoadFramework = function(name) {
var head = "/System/Library/";
var foot = "Frameworks/" + name + ".framework";
var bundle = [NSBundle bundleWithPath:head + foot] || [NSBundle bundleWithPath:head + "Private" + foot];
[bundle load];
return bundle;
};
// keyWindow
MJKeyWin = function() {
return UIApp.keyWindow;
};
// 根控制器
MJRootVc = function() {
return UIApp.keyWindow.rootViewController;
};
我们就知道他里边有MJRootVc(), MJKeyWin等等,还有我们现在已经懂了cycript相关的东西 ,比如我修改网易的登录按钮、修改微信的钱包那就是很容易做到的了,我这里就不在赘述了,如果你还不明白,请看这个链接(https://www.jianshu.com/p/4271bba925fb)这种的多的很。但是你要明白我们现在的修改都是在内存中,如果你点击了返回在进来它还是会变回原来的样子,怎样长久的修改我会在以后的文章说道。但是需要大家注意:就拿修改微信余额来说就算我们在客户端长久修改了他的余额但是服务器还是修改不了,我们只是针对客户端,怎样把服务器修改了那么就需要你研究他的算法来进行破解,估计不是高手中的高手也破解不了一般如果不是黑客入侵他的数据库,修改他内部的东西是改不了的,但是黑客也入侵不了他的数据库,如果你能入侵那么腾讯也该倒闭了,所以我们还是不要异想天开了,我们学习逆向就需要研究他内部怎么实现的就行了。
Reveal
- Reveal的安装
首先我们需要在我们的越狱手机上安装一些插件,具体怎么做我用图片的方式来进行展示:
第一步:
image.png
第二步:
image.png
注意:其中安装Reveal Loader他中途会有一段卡顿的时间,不用重启慢慢的等待它完成。
第三步:
image.png
注意:
1.当我找我自己的iphone的时候发现没有RHRevealLoader这个文件夹,那么这时候就需要自己创建一个,然后将我们mac上的那个文件导入到这个文件夹下。
2.我们知道reveal下载网站,但是人家是要钱或者免费给你用几天,我看到这个都不爽,所以我找了一个免费版(不知道怎么就是不愿意花钱),https://pan.baidu.com/s/1lz9lwTKXD9bS8DnvT9gkBQ,提取码为:b31u -
reveal使用
1.首先打开你要调试的app的界面(注意reveal只能查看ui)
2.看我图片显示
image.png
最新版的reveal是支持wifi和usb调试的 ,但是我这个我看了下只支持usb
如图
image.png
这样的话点击左边的框就可以看到他具体的结构和层级关系了。
网友评论