内容简介:本文是该系列文章的第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”。
接下来,您可能想要浏览存储在内存中的当前对象。在第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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 渗透测试工具备忘录
- Windows渗透测试工具:RedSnarf
- Android App渗透测试工具分享
- 来自GitHub的系列渗透测试工具
- GyoiThon:基于机器学习的渗透测试工具
- 专业人士必备的10个渗透测试工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
面向对象分析与设计
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......一起来看看 《面向对象分析与设计》 这本书的介绍吧!