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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

.NET设计规范

.NET设计规范

克瓦林纳 / 葛子昴 / 人民邮电出版社 / 2006-7 / 49.00元

本书为框架设计师和广大开发人员设计高质量的软件提供了权威的指南。书中介绍了在设计框架时的最佳实践,提供了自顶向下的规范,其中所描述的规范普遍适用于规模不同、可重用程度不同的框架和软件。这些规范历经.net框架三个版本的长期开发,凝聚了数千名开发人员的经验和智慧。微软的各开发组正在使用这些规范开发下一代影响世界的软件产品。. 本书适用于框架设计师以及相关的专业技术人员,也适用于高等院校相关专业......一起来看看 《.NET设计规范》 这本书的介绍吧!

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

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码