iOS逆向1020-2-越狱Cycript
2018-06-28 本文已影响67人
lukyy
###上节用到终端命令
$ ssh-copy-id root@192.168.31.178
$ ssh root@192.168.31.178
$ ssh -p 22 root@192.168.31.178
$ python tcprelay-py -t 22:12345 //监听本地(本机Mac)的12345,只要监听到,就给手机的22 端口发数据
$ python /Users/zhangmeng/ZMshell/python-client/tcprelay.py -t 22:12345 //映射本地端口
$ ssh root@localhost -p 12345
$ ssh root@127.0.0.1
$ sh usbConnect.sh
$ sh usbLogin.sh
$ vim /Users/zhangmeng/.ssh/known_hosts // 编辑 hosts 删掉 localhost
$ touch 123.txt
$ rm 123.txt
$ scp 123.txt root@192.168.31.178:~/ // 通过WiFi 拷贝
$ ssh root@192.168.31.178
$ scp -P 12345 123.txt root@localhost:~/ // 把 12345 拷贝到 123.txt 文本内,通过映射 USB 传输数据
$ cd / //到用户目录
$ cd ~/ //到电脑的根目录
$ cd Desktop
$ cd ~/.ssh
$ ~/.ssh ls
$ ~/.ssh cat known_hosts
// 剥离架构 应用瘦身
$ lipo live4iphone -thin arm64 -output arm64_live4 //166M --> 64M
创建文件夹 PayLoad,arm64_live4 放入PayLoad文件内,
$ zip -ry TenXunLive.ipa PayLoad //64M --> 47M
重新安装 TenXunLive.ipa //安装成功 --> 94.5 M 非越狱手机,用重签名安装
默认密码 pwd: alpine
-
001--越狱环境启动Cycript.wmv
![](https://img.haomeiwen.com/i2154347/9a78faf9104586b8.png)
$ cat .inputrc
$ ls //查看文件
$ ls -a //查看隐藏文件
$ scp -P 12345 .inputrc root@localhost:~/
$ exit
$ sh usbLogin.s
$ cat .inputrc
$ vim .inputrc // vim编辑 报错,要安装以下工具
![](https://img.haomeiwen.com/i2154347/55fabadab022d86b.png)
// 在手机敲终端指令,安装以下工具
![](https://img.haomeiwen.com/i2154347/d49417ecc07aaf0a.png)
// 在越狱手机上调试
![](https://img.haomeiwen.com/i2154347/f5be6ebea38b6d72.png)
// iOS11 用以下
![](https://img.haomeiwen.com/i2154347/1b721cfc7ececa6e.png)
$ sh usbLogin.s
$ ps -A // 查看所有进程
$ ps -A | grep WeChat // | 管道输出符查找对应app进程
$ cycript -p WeChat // 连接app, app 要在运行中
cy# UIApp
control + D // 断开
$ cycript -p 20572 // 重新连接app ( 20572 是进程id,即通过进程id连接 )
![](https://img.haomeiwen.com/i2154347/174f10e413a01a65.png)
cy# UIApp
cy# UIApp,keyWindow
cy# UIApp,keyWindow.recursiveDescription().toString() // 结构层次清晰
cy# ObjectiveC.classes
cy# var keyWindow = UIApp,keyWindow
cy# keyWindow
cy# function sum(a,b) {return a+b; } //在 cycript 下 的当前进程可用
cy# sum(1,2)
![](https://img.haomeiwen.com/i2154347/870599a427c6a966.png)
![](https://img.haomeiwen.com/i2154347/6568f6a4d67a5938.png)
![](https://img.haomeiwen.com/i2154347/ef0b48ff3bf2362e.png)
LLDB
(lldb) po [self.view.window recursiveDescription]
![](https://img.haomeiwen.com/i2154347/d7362750f70745c3.png)
002--cy文件的运用.wmv
// 封装函数
创建test.cy Sublime Text 文件
// 内容
rootvc = function(){
return UIApp,keyWindow.rootViewController;
}
![](https://img.haomeiwen.com/i2154347/dadb8ad5a30108dc.png)
![](https://img.haomeiwen.com/i2154347/ea88916b280c3407.png)
$ cd /usr/lib/cycript0.9/
$ scp -P test.cy .inputrc root@localhost:/usr/lib/cycript0.9/
//拷贝在 cycript0.9 目录下
![](https://img.haomeiwen.com/i2154347/0ac9f07a06cf730a.png)
查看结果
![](https://img.haomeiwen.com/i2154347/8152444bae5d6f8b.png)
![](https://img.haomeiwen.com/i2154347/cd67bfa25e30cadd.png)
$ cycript -p WeChat // 连接app,app 要在运行中
cy# @import test // 导入封装文件
cy# rootvc()
![](https://img.haomeiwen.com/i2154347/810702e55c71e71f.png)
2.2 修改封装,重启WeChat
![](https://img.haomeiwen.com/i2154347/d3dfca405ebc8c35.png)
$ cycript -p WeChat // 连接app,app 要在运行中
cy# @import test // 导入封装文件
cy# rootvc
2.3 修改封装文件的路径,重启WeChat
![](https://img.haomeiwen.com/i2154347/dd38fcf19ce85a00.png)
![](https://img.haomeiwen.com/i2154347/ccd9a377a5a94382.png)
$ cycript -p WeChat // 连接app,app 要在运行中
cy# @import com.TanZhou.test // 导入封装文件
cy# rootvc
2.4 修改封装,重启WeChat
![](https://img.haomeiwen.com/i2154347/7781b5c1f353286b.png)
![](https://img.haomeiwen.com/i2154347/3e3729ddf1cdcf44.png)
// 上面👆是变量
// 下面👇是函数,拿出的数据是当时的
![](https://img.haomeiwen.com/i2154347/75886e77dcff28b5.png)
![](https://img.haomeiwen.com/i2154347/25b36fb58fc49835.png)
2.5 修改封装,重启WeChat
![](https://img.haomeiwen.com/i2154347/2cddb49f5b903346.png)
![](https://img.haomeiwen.com/i2154347/ed996156316a453d.png)
$ cycript -p WeChat /usr/lib/cycript0.9/test.cy //直接附加文件
$ cycript -p WeChat /usr/lib/cycript0.9/test.cy //直接附加文件
//直接附加文件,执行一句,再执行下一句,可以直接改 test.cy ,不用重启 WeChat,直接执行
$ cycript -p WeChat /usr/lib/cycript0.9/test.cy ; cycript -p WeChat
2.6 修改封装,重启WeChat
//js语法:IIFE 匿名函数 自执行的表达式
![](https://img.haomeiwen.com/i2154347/6ec2d17d7e25b952.png)
(function(exports) {
APPID = [NSBundle mainBundle].bundleIdentifier,
APPPATH = [NSBundle mainBundle].bundlePath,
APPHOME = NSHomeDirectory(),
APPDOC = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0],
APPLIBRARY = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)[0],
APPCACHE = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0]
HKRootVC = function(){
return UIApp.keyWindow.rootViewController;
};
HKKeyWindow = function(){
return UIApp.keyWindow;
};
HKGetCurrentVCFromRootVc = function(rootVC){
var currentVC;
if ([rootVC presentedViewController]) {
// 视图是被presented出来的
rootVC = [rootVC presentedViewController];
}
if ([rootVC isKindOfClass:[UITabBarController class]]) {
// 根视图为UITabBarController
currentVC = HKGetCurrentVCFromRootVc(rootVC.selectedViewController);
} else if ([rootVC isKindOfClass:[UINavigationController class]]){
// 根视图为UINavigationController
currentVC = HKGetCurrentVCFromRootVc(rootVC.visibleViewController);
} else {
// 根视图为非导航类
currentVC = rootVC;
}
return currentVC;
};
HKCurrentVC = function(){
return HKGetCurrentVCFromRootVc(HKRootVC());
}
})(exports);
003--非越狱上载入cy文件.wmv
// 先升级 MokeyApp
![](https://img.haomeiwen.com/i2154347/790283124158dc70.png)
$ sh cylogin.sh
![](https://img.haomeiwen.com/i2154347/ee85045869a60e91.png)