实时调试(电脑一直跳出实时调试)

实时调试(电脑一直跳出实时调试)

实时调试(电脑已经跳出实时调试)

Cycript是Cydia创始人Saurik推出的脚本语言。Cycript是OC和JavaScript语法的解释器,这意味着我们可以在一个命令中使用OC或JavaScript,甚至两者都可以。

它可以挂钩正在运行的进程,并在运行时修改许多东西。至关重要的是,它不会中止我们的计划。

说白了就是运行时把程序搞清楚,然后把App玩好。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

Cycript安装

官方网站:http://www.cycript.org/

下载SDK

在SDK中,您可以找到一个可执行文件。是的,进入终端并执行命令$。/cycript一切都会好的。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

安装错误

如果报告了这个错误,显然需要Ruby 2.0。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

1.检查当前的Ruby版本。

$ cd /System/Library/Frameworks/Ruby.framework/Versions/$ ls

2.创建与目录匹配的文件夹。

$ sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/

3.复制一个Ruby 2.0。当然,2.3是你自己ls的Ruby版本。

sudo ln -s /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib

成功的标志:

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

配置zsh

当然,为了方便起见,我们需要将Cycript配置成bash,这样我们就不必每次都寻找这个可执行文件。

找到您的cycript可执行目录。

在。zshrc文件,配置PATH。

完成后,打开我们的iterm2并直接键入$ cycript。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

Cycript用法

安装完成后,下一步就是我们的重头戏,那就是使用。来看看我吹嘘的这个牛逼的东西有多变态。

如前所述,Cycript可以挂钩正在执行的进程。这是什么意思?

一.联系

当我们的手机打开一个应用时,它会启动一个过程。没错。当App打开后,Cycript可以通过链接到我们的手机来连接App。

当然,挂钩流程是有条件的。

首先,你需要通过ssh连接手机。

然后将Cycript.framework中的cycript注入到App中。

这两件事自己做很麻烦。这里有一个工具-猴子开发。它的使用和安装非常简单,你可以在git上查看https://github.com/AloneMonkey/MonkeyDev。

第二,通过MonkeyDev创建一个项目,这里有一个微信的例子。

打开iterm2,连接手机,输入:$ cyscript-r 192 . 168 . 0 . 0:6666(192 . 168 . 0 . 0是手机WiFi的IP,可以在设置中查看)

三.使用

因为Cycript兼容很多语法,OC也是兼容的,还有一个标签可以提示。他的语法非常有力。这里有一些例子。

Ui:打印出UIApplication对象

var KeyWindow = uiwindow . KeyWindow();:自定义变量,keyWindow将来可以作为变量使用。

* #变量地址:打印出该对象的所有属性和相关信息。

键盘窗口。递归描述()。tostring:检查层次关系,键窗口上的所有层次都会出来,下面的toString()会是打印格式。

选择(UIButton):打印UIButton类创建的所有对象。

脚本登录

已经介绍了整个Cycript连接。为了养成使用脚本的习惯,便于记忆和使用,我们最好将登录连接写入脚本。

1.在主目录中创建一个特殊的文件夹来放置定制的脚本。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

2.创建一个cylogin.sh文件,并在文件中写入登录命令。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

3.在中配置环境变量。zshrc。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

4.直接打开iterm2,执行脚本,然后完成

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

Cycript把你当成了b。

1.微信转账账号0.01元

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

2.Cycript找到此控件。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

3.直接搜索“0.01”找到对象的地址。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

4.使用#0x1264d5e0获取此对象并修改文本。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

Cycript的一些高级用法

一、示范

目标类:当前进程中的所有类

获取这个应用程序的版本号。

PView():所有当前视图

Pvcs():所有当前控制器和控制器堆栈。

Pactions(#0x1382ffaa):对象的响应者。当然,这个对象需要一个响应者。

Rp(#0x1382ffaa):对象的响应者链

这些用法的原因是什么?其实这些语法不是Cycript提供的,而是Monkey为我们封装的。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

您可以看到,我们刚刚键入的语法都是封装的命令。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

第二,定制一个. cy文件包。

当然,我们可以定制这些高级语法,做你想做的事情。

1.在Xcode中找到Empty,创建一个. cy文件,并关注target

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

2.修改文件的语法。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

3.将文件添加到copyfile中,并注意选定的目标。

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

4.写你的自定义代码,这里是JavaScript。

//IIFE 匿名函数自执行表达式(function(exports) {  JGAPPPATH = [NSBundle mainBundle].bundlePath; JGROOTVC = function() { return UIApp.keyWindow.rootViewController; } JGKEYWIND = function() { return UIApp.keyWindow; }  JGGetCurrentVCFromRootVc = function(rootVC){ var currentVC; if([rootVC presentedViewController]){ //视图被persent出来的 rootVC = [rootVC presentedViewController]; }  if([rootVC isKindOfClass:[UITabBarController class]]){ // 根视图如果是UITabBarController currentVC = JGGetCurrentVCFromRootVc(rootVC.selectedViewController); }else if([rootVC isKindOfClass:[UINavigationController class]]){ //根视图如果是UINavigationController currentVC = JGGetCurrentVCFromRootVc(rootVC.visibleViewController); }else{ //视为当前控制器 currentVC = rootVC; }  return currentVC; };  JGCurrentVC = function(){ return JGGetCurrentVCFromRootVc(JGROOTVC()); };})(exports);

5.首先@import,然后执行(直接执行会出错)

iOS逆向|Cycript安装和使用,实时调试从未如此简单,逆向必备

摘要

Cycript可以在进程中调试程序,而无需挂起程序。

该命令功能强大,基本上集成了LLDB中的指令。

以上就是由优质生活领域创作者 深圳生活网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~

分享到 :
相关推荐

Leave a Reply

Your email address will not be published.