iOS应用程序安全(5)-用Cycript做运行时分析的高级技巧(Yahoo天气应用)
来源:互联网 发布:网络大电影审批程序 编辑:程序博客网 时间:2024/05/20 05:59
作者:Prateek Gianchandani
译者:吴发伟
原文网址:http://resources.infosecinstitute.com/ios-application-security-part-5-advanced-runtime-analysis-and-manipulation-using-cycript-yahoo-weather-app/
版权声明:自由转载-非商用-保持署名
引言
在前一篇文章中,我们学习了如何在设备上安装使用Cycript。本文我们将使用一些运行时分析的高级技巧。我们将看看如何获得特定类(方法,实例变量)的值并且在运行时修改它们。
找出特定类的方法
现在假定我们正在一个程序运行的时候分析它的流程,那么,知道特定类或者特定view controller正在调用哪些方法将会给我们极大的帮助。因为Cycript能够混合使用Objective-C和javascript,我们能够写一个即有Objective-C又有Javascript语法的函数。我们那个能够在解释器中定义函数,然后在任意时候使用它们以帮助我们找到有用信息。一个能够找到这些有用代码块的地方位于这。本文我们将使用这里的代码块。
首先,确保我们挂钩进了正在运行的进程。
我们先定义一个能够打印出一个指定类的方法的函数。你可以在这找到这些Cycript tricks。
既然我们已经定义好了方法,那么我们可以输入任何类,然后得到对应的方法列表。从上一片文章中,我们知道Yahoo Weather的delegate是YWAppDelegate. 因此,这里试试这个类包含的所有方法。
上面打印出了YWAppDelegate定义的方法。 在@selector后面的就是方法名称。请注意,这里会给出关于私有方法的名称,也会给出定义在类中的属性的setter和getter函数。
类似的,我们可以打印出YahooSlidingViewController的方法。
我们知道YahooSlidingViewController管理着slide菜单,并且充当着外观者(facade)的作用。为了找出真正负责显示天气的view controller,我们可以使用下面的命令。
因此,YWMainViewController就是当前负责显示天气的view controller。因此,下面的view实际上来自YWMainViewController。
让我们打印出YWMainViewController的方法。
你可以看到,这里有个方法叫做userDidrequestUpdate.
从方法名称可以看出,一旦用户下拉刷新,这个方法就会被调用。有Cycript,我们可以随时调用这个方法。我们要先引用这个view controller,然后在其上调用这个方法。如下图所示。
可以看到,即使我们并没有下拉刷新,应用也完成了更新。
如上面所说,这些方法也包含属性的setter和getter。
从安全的角度来说,能够在运行时操纵应用程序给了我们巨大的优势。我们能够在我们想要的时候调用任何方法。想像一下当用户第一次登陆的时候输入其用户名和密码,一旦登陆成功,一个叫做 didLogin的方法会被调用。我们可以直接调用这个方法而不用输入任何用户名/密码的组合。
如果我们能够把特定view controller的变量都打印出来的话,那会很有用处的。因此,我们定义一个能够打印出所有实例变量的函数,你可以从这找到代码块。
现在,我们打印出YWMainViewController的实例变量。
你可以看到,这里有一个location view controller的实例变量,你可以向左和向右swipe滑动来查看不同的地方。从名字来看,locationViewControllers 更像是一个viewcontroller数组。使用Cycript,我们能够打印出该变量的值。
现在我们向右滑到New York
现在我们打印出这个变量
可以看到,这个数组始终包含3个location view,其他的都是nil。它并不把所有的location view controller都包含进来,以便更好的管理内存。所以在任何时刻,我们能够拥有当前正在看的,左边和右边的view controller。当我们想要去另一个不同地方的时候,它会自动的使得当前可见的位于中间并且实例化其左边和右边的view controller,因此当我们滑动的时候,不会感觉到任何的时延。这是个编写不占用过多内存的代码的好方法。
总结
在前两篇文章中,我们对Yahoo weather应用进行了运行时分析。在接下来的文章中,我们将看到更多Cycript的技术,并且我们将关注method swizzling。
References:
Cycript
http://www.cycript.org/
Cycript tricks
http://iphonedevwiki.net/index.php/Cycript_Tricks
本文原文是 IOS Application security Part 5 – Advanced Runtime analysis and manipulation using Cycript (Yahoo Weather App)
- iOS应用程序安全(5)-用Cycript做运行时分析的高级技巧(Yahoo天气应用)
- iOS应用程序安全(5)-用Cycript做运行时分析的高级技巧(Yahoo天气应用)
- iOS应用程序安全(4)-用Cycript进行运行时分析(Yahoo天气应用)
- iOS应用程序安全(4)-用Cycript进行运行时分析(Yahoo天气应用)
- iOS应用安全Part4:使用Cycript进行运行时分析
- iOS应用程序安全(23)-对抗运行时分析和操作
- iOS应用程序安全(8)-用Cycript进行Method Swizzling
- iOS应用程序安全(22)-使用GDB进行运行时分析和操作
- IOS安全–使用lldb对应用进行运行时分析
- iOS应用逆向工程(四):利用Cycript 操作运行时
- iOS运行时工具-cycript
- iOS运行时工具-cycript
- iOS运行时工具-cycript
- ios--安全攻防--使用Cycript修改支付宝app运行时
- iOS安全攻防(五):使用Cycript修改支付宝app运行时
- ios安全攻防(五)使用Cycript修改支付宝app运行时
- iOS应用程序安全(9)-用Snoop-it分析iOS应用的安全
- iOS使用cycript调试APP技巧
- oracle中关于varchar2的最大长度问题
- Playing Audio in the Background(在后台播放音乐)
- (about program)#if的使用
- eclipse内存溢出报错:java.lang.OutOfMemoryError:Java heap space
- Yii CActiveRecord 逻辑删除封装
- iOS应用程序安全(5)-用Cycript做运行时分析的高级技巧(Yahoo天气应用)
- for循环和while循环在使用continue时有所区别
- 中国电信数据机房管理系统
- MySQL中merge表存储引擎用法
- 错误
- SQL SERVER表联接查询的各种写法
- HDU 2546 饭卡 01背包+贪心
- ubuntu jdk安装配置
- iOS应用程序安全(6)-iOS 7的新安全功能