###上节用到终端命令
$ 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
$ cat .inputrc
$ ls //查看文件
$ ls -a //查看隐藏文件
$ scp -P 12345 .inputrc root@localhost:~/
$ exit
$ sh usbLogin.s
$ cat .inputrc
$ vim .inputrc // vim编辑 报错,要安装以下工具
image.png
// 在手机敲终端指令,安装以下工具
image.png// 在越狱手机上调试
image.png// iOS11 用以下
image.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连接 )
image.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)
image.png
image.png
image.png
LLDB
(lldb) po [self.view.window recursiveDescription]
image.png002--cy文件的运用.wmv
// 封装函数
创建test.cy Sublime Text 文件
// 内容
rootvc = function(){
return UIApp,keyWindow.rootViewController;
}
image.png$ cd /usr/lib/cycript0.9/
$ scp -P test.cy .inputrc root@localhost:/usr/lib/cycript0.9/
//拷贝在 cycript0.9 目录下
查看结果
image.png image.png$ cycript -p WeChat // 连接app,app 要在运行中
cy# @import test // 导入封装文件
cy# rootvc()
image.png
2.2 修改封装,重启WeChat
image.png$ cycript -p WeChat // 连接app,app 要在运行中
cy# @import test // 导入封装文件
cy# rootvc
2.3 修改封装文件的路径,重启WeChat
image.png image.png$ cycript -p WeChat // 连接app,app 要在运行中
cy# @import com.TanZhou.test // 导入封装文件
cy# rootvc
2.4 修改封装,重启WeChat
image.png image.png// 上面👆是变量
// 下面👇是函数,拿出的数据是当时的
2.5 修改封装,重启WeChat
image.png image.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 匿名函数 自执行的表达式
image.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
image.png$ sh cylogin.sh
image.png
网友评论