iOS渗透测试工具,第2篇:Cycript

栏目: IOS · 发布时间: 5年前

内容简介:本文是该系列文章的第2篇(对于这个系列文章来说,我们假设用户使用Electra进行越狱。就我而言,使用的系统是iOS11.1.2,但是本系列中的大多数工具都可以在任何版本的iOS11上使用。对于iOS 11来说,cycript是随bfinject一起安装的,关于bfinject的安装方法,我们在第1篇中已经安装好了。也就是说,我们已经在iPhone上安装了Cycript,不过,我们还需要在计算机上安装该软件。

本文是该系列文章的第2篇( 第一篇请点击此处 ),我们将继续为读者介绍最有用的iOS应用程序渗透测试工具。在本文中,我们要介绍的 工具 为“Cycript”,这是一个运行时处理工具,主要用于动态分析和探索目标应用程序的执行流程。

对于这个系列文章来说,我们假设用户使用Electra进行越狱。就我而言,使用的系统是iOS11.1.2,但是本系列中的大多数工具都可以在任何版本的iOS11上使用。

安装Cycript

对于iOS 11来说,cycript是随bfinject一起安装的,关于bfinject的安装方法,我们在第1篇中已经安装好了。也就是说,我们已经在iPhone上安装了Cycript,不过,我们还需要在计算机上安装该软件。

您可以从http://www.cycript.org/下载该软件。

下载后,请将.zip解压到您喜欢的任何位置,然后,通过cd命令切换至该目录中。

将Cycript注入到应用程序中

现在,我们要在目标应用程序上运行Cycript,具体步骤如下所示:

通过SSH连接手机,并运行下列命令:

bash bfinject -P AppName -L cycript

这时候,会看到如下内容:

接下来,我们需要在计算机上启动Cycript程序。然后,在新的终端窗口中,运行如下所示的命令:

cycript -r XX.X.X.XXX:1337

其中xx.x.x.xxx是该设备的IP地址。

当您看到Cycript提示符出现时,说明连接成功:

cy#

注意:对于运行Mojave/High Sierra的用户来说,在运行Cycript时可能会遇到过如下所示的错误:

dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
 
Referenced from: /Users/me/Downloads/cycript/Cycript.lib/cycript-apl
 
Reason: image not found
 
Abort trap: 6

如果出现这种情况,说明您机器上的 Ruby 的版本/路径有问题,这时最简单的解决方法是运行下列命令:

brew install <a href="/cdn-cgi/l/email-protection" data-cfemail="8bf9fee9f2cbb9a5bb">[email protected]</a>

然后,手动将libruby.2.0.0.dylib文件移动到cycript主目录中。

探索运行时的世界

现在,我们已经为分析工作做好准备了!

下面,我们运行的第一个、也是最基本的命令,就是去确定当前视图,具体操作如下所示:

cy# UIApp.keyWindow.rootViewController

这样的话,软件就会返回当前视图控制器的名称。当使用更复杂的导航控制器或制表符栏控制器时,为了确定当前查看的到底是哪个视图,需要为"root viewcontroller"添加“visible viewcontroller”、“selected viewcontroller”或“presented viewcontroller”。

iOS渗透测试工具,第2篇:Cycript

接下来,您可能想要浏览存储在内存中的当前对象。在第1篇文章中,我们考察了一个应用程序转储的头文件,并注意到了一些有趣的类/属性/方法。现在,我们看到的当前视图名为“WelcomeViewController”。我们可以转至转储的头文件,并搜索“WelcomeViewController”,可以看到,它有一个属性“loggedinuser”。

现在,我们可以借助cycript工具来查看这些属性了。

cy# UIApp.keyWindow.rootViewController.loggedInUser
"<User: 0x104924e00>"

现在,我们看到LoggedInUser属性是名为“User”的类实例的引用。此外,我们也可以将对象存为变量,以便于进一步的考察:

cy# currentUser = UIApp.keyWindow.rootViewController.loggedInUser

现在,我们可以返回类转储文件,查看LoggedInUser等类中是否含有我们感兴趣的属性。此外,我们还可以调用方法!例如,假设loggedInUser类有一个方法:

- (_Bool)isEmailVerified;

我们可以使用cycript调用此方法,并查看其返回结果:

cy# [currentUser isEmailVerified]
true

我们还对该方法进行操纵,使其返回我们想要的内容:

cy# User.prototype.isEmailVerified = function () { return true; }

同时,我们也可以操纵属性:

cy# user.isLoggedIn = true

另一个非常有用的命令是“choose”——当您知道要检查的类实例,却不知道它在哪里时,该命令就派上用场了。这个函数将返回一个数组,其中包含找到的实例,通常来说,数组中的第一个对象,就是我们的要找的对象。例如,假设我要考察一个名为“NetworkHandler”的类的实例:

cy# choose(NetworkHandler)[0]
"<NetworkHandler: 0x103524e00>"

现在,我可以将该实例存储在一个变量中,并进行进一步的考察。

当然,这只是cycript丰富功能中的一个例子而已,若要更加深入的了解该软件的功能,推荐阅读这篇文档。本文到此结束,感谢阅读!


以上所述就是小编给大家介绍的《iOS渗透测试工具,第2篇:Cycript》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

面向对象分析与设计

面向对象分析与设计

Grady Booch、Robert A. Maksimchuk、Michael W. Engel、Bobbi J. Young、Jim Conallen、Kelli A. Houston / 王海鹏、潘加宇 / 人民邮电出版社 / 2009-8 / 79.00元

《面向对象分析与设计(第3版)》是UML创始人Grady Booch的代表作之一,书中介绍的概念都基于牢固的理论基础。同时,《面向对象分析与设计(第3版)》又是一本注重实效的书,面向架构师和软件开发者等软件工程实践者的实际需要。《面向对象分析与设计(第3版)》通过大量例子说明了基本概念,解释了方法,并展示了在不同领域的成功应用。全书分为理论和应用两部分。理论部分深刻剖析了面向对象分析与设计(OOA......一起来看看 《面向对象分析与设计》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器