动态调试之Cycript

一、Cycript 安装

  • 放到\opt这个路径下

  • 配置.bash_profile

  • 退出终端,再次打开。可以table 出 cycript,但是报错,如下

  • open /System/Library/Frameworks/Ruby.framework/Versions,打开Versions文件
  • 把2.3复制一份,改名为2.0,然后把/2.0/usr/lib/libruby.2.3.0.dylib改成2.0.0.dylib

  • 没法复制时,参考关闭系统完整性保护 SIP(System Integrity Protection)的方法。Mac系统一升级(10.15.1),这个方法就没用了,大爷的。

  • 新的解决方案 参考
    sudo install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib /opt/cycript_0.9.594/Cycript.lib/libcycript.dylib

  • control + d 退出cycript

二、Cycript 使用

  • Cycript不用断住程序,就可以直接调试应用

  • Cycript主要是界面调试,没法下断点

  • 1、创建一个MonkeyApp的应用

  • 2、把准备好砸壳的ipa,拖入TargetApp文件夹中。然后就可以运行了。自己创建的Demo的.app包也可以。
  • 3、开启的端口,这里是多少,就用多少。这里是6666
  • 4、保证电脑和手机在同一个局域网内
  • 5、找到手机上对应WiFi的IP地址。这里是192.168.255.224
  • 6、保证该应用在前台运行,然后在终端输入cycript -r 192.168.255.224:6666(-r之间一定不能有空格),进行附加。如果应用在后台,附加的时候很可能附加不上。
  • *** _syscall(connect(socket_, info->ai_addr, info->ai_addrlen)):../Console.cpp(306):CYSocketRemote [errno=60] , 如果遇到这个错误,换一个wifi试试、换个手机(换ip)。还是不行的话就用手机给电脑开热点。就是ip或端口或Wi-Fi的问题。
  • *** _syscall(connect(socket_, info->ai_addr, info->ai_addrlen)):../Console.cpp(306):CYSocketRemote [errno=61],如果遇到这个错误就重启一下应用就好,如果重启应用不行就重启手机
  • UIWindow.keyWindow() 获取keyWindow
  • [UIApplication sharedApplication] 简写 UIApp 获取APPlication单例对象
  • var keyWd = UIWindow.keyWindow() 定义一个变量
  • UIWindow.keyWindow().rootViewController
  • recursiveDescription() 循环打印子视图
  • toString() 格式化打印(遇到\n换行)
  • # 对象地址。拿到该对象,相当于po这个对象,和调用这个对象是一样的,可用于调用方法
  • * 对象名。可以取出对象的成员变量
  • choose(类名) 查询当前进程中该类型的对象。

  • 以下都是Monkey工具自带。而在越狱手机Cydia安装Cycript插件是没有的
  • Monkey拉取了网络的cy文件
  • https://raw.githubusercontent.com/AloneMonkey/MDCycript/master/MS.cy
  • https://raw.githubusercontent.com/AloneMonkey/MDCycript/master/MS.cy
  • APPID
  • pviews ()
  • pvcs ()
  • pvc()
  • pactions(#0x100e16320) 查看action 和 target
  • rp(#0x100e16320) 查看响应者链条

  • 注意
  • 注意这里没有self
  • cycript 不能拿到函数地址
  • cycript 主要调试界面的
  • 只要应用装到手机上了,就可以拔掉数据线了
  • 页面一旦换了,内存地址 就不要再用了!!
  • 没有search
  • 这里有APPID,是因为Monkey集成的,而在越狱手机Cydia安装Cycript插件是没有的

三、脚本自动链接

四、封装cy文件

Cy文件
Cycript是一门脚本语言,它可以加载封装好的.cy文件。
我们会将常见的Cycript常用功能封装到.cy文件中,便于调试。

非越狱中导入.cy文件
利用MonkeyDev工具导入.cy文件
MonkeyDev本身集成了Cycript。我们只需要将.cy文件通过xcode导入Framworks目录即可。

1、在CycriptDemo文件夹下创建一个dyz.cy空文件(后缀名一定要为.cy)

2、dyz.cy文件中添加如下代码,然后保存一下

3、拷贝到CycriptDemo这个targets中

4、重新运行项目即可

5、需要导入才可以使用哦 @import dyz

DYZCurrentVC
DYZCurrentVC () 才会执行

APPIDDYZ = [NSBundle mainBundle].bundleIdentifier,
APPPATHDYZ = [NSBundle mainBundle].bundlePath,

//如果有变化,就用function去定义!!
DYZRootvc = function(){
return UIApp.keyWindow.rootViewController;
};

DYZKeyWindow = function(){
return UIApp.keyWindow;
};

DYZGetCurrentVCFromRootVc = function(rootVC){
var currentVC;
if([rootVC presentedViewController]){
rootVC = [rootVC presentedViewController];
}

if([rootVC isKindOfClass:[UITabBarController class]]){
currentVC = DYZGetCurrentVCFromRootVc(rootVC.selectedViewController);
}else if([rootVC isKindOfClass:[UINavigationController class]]){
currentVC = DYZGetCurrentVCFromRootVc(rootVC.visibleViewController);
}else{
currentVC = rootVC;
}

return currentVC;
};

DYZCurrentVC = function(){
return DYZGetCurrentVCFromRootVc(DYZRootvc());
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容