登录
|
立即注册
首页
Portal
每日签到
版块
BBS
逆向技术
无聊
搜索
呵呵呵呵
逆向未来技术社区
»
版块
›
移动安全
›
IOS安全
›
帖子
IOS应用安全(四): 用Cycript分析Runtime
[复制链接]
4332
0
发表在
原创文章
2015-8-27 01:19:12
|
查看全部
|
阅读模式
本帖最后由 ken 于 2015-8-27 15:17 编辑
原文出处:
http://highaltitudehacks.com/2013/07/02/ios-aios-appllication-security-part-4-runtime-analysis-using-cycript-yahoo-weather-app/
各位大神轻拍。IOS从2013.06到现在也更新了很多版本,可能此篇文章具有时效性不适应于新版本的IOS应用。
static/image/hrline/5.gif
我们上一篇学习了关于IOS应用的Runtime特性,本节内容将介绍一款比较重要的工具Cycript来分析和修改IOS应用的Runtime。这次就以 Yahoo Weather应用来分析。
Cycript
cycript是javascript解释器。而且也能解释Objective-C的语法,这意味着我们可以写Objective-C,也可以写javascript的,在个别中我们可以夹杂Objective-C和javascript。它可以帮助我们hook正在运行的程序并且帮助我们修改应用运行期间修改一些东西。只要是我们关注的那部分。 下面是一些Cycript的高级用法。
Installing Cycript
从
http://www.cycript.org/debs/
这里下载最新版的来安装。
http://highaltitudehacks.com/images/posts/ios4/1.png
下载完后用sftp上传到你的手机里。
http://highaltitudehacks.com/images/posts/ios4/2.png
输入dpkg -i 包名安装程序,这里包名是Cycript,安装Cycript程序。
http://highaltitudehacks.com/images/posts/ios4/3.png
输入命令Cycript看是否安装成功。
修改Runtime
这次我们以
Yahoo Weather
来完成我们的测试。(后面是说这个XXX好之类的,不翻译,脑补)。
安装完后我们运行,确保应用实在前台运行。因为应用一旦后头运行,它就处于暂停状态,你就无法对它做更多的事情了。你可以直接使用Cycript来直接hook正在运行的程序。使用命令Cycript -p PID(进程名,可以使用ps来查看)来hook进程。
http://highaltitudehacks.com/images/posts/ios4/5x.png
一旦hook成功,Cyript就会提供一个Cyrupt解释器。现在我们就可以输入命令。
使用Objective-C 语法
[UIApplication sharedApplication]
获取应用的实例。
http://highaltitudehacks.com/images/posts/ios4/5.png
你也可以定义一个变量,这里,我定义了变量a的值是
[UIApplication sharedApplication]。
请注意我们我们左边输入的是javascript语法,var a定义变量,然而右边却是
[UIApplication sharedApplication],
Objective-C的语法,我想这正是Cycript的精妙所在。
http://highaltitudehacks.com/images/posts/ios4/6.png
Cyript默认有一个变量UIApp,方便我引用应用的实例。
http://highaltitudehacks.com/images/posts/ios4/7.png
查找应用的委托类,我们可以使用命令
[UIApplication sharedApplication].delegate
来查找委托类,但是在Cyript已经用变量UIApp来定义了应用的实例。下图a的值为UIApp,因此使用a.delegate来获取委托类。
http://highaltitudehacks.com/images/posts/ios4/8.png
我们已经得出我们这个应用的委托类是
YWAppDelegate,
因此对应在源码的文件时YWAppDelegate.h 和 YWAppDelegate.m。
接下来该尝试调用程序运行时一些方法。我们快速的看一下这个程序的图片。
http://highaltitudehacks.com/images/posts/ios4/IMG_0091.PNG
你可以看到上边的状态栏是隐藏的。我们可以调用一些方法来显示状态栏,同样的,请确保程序运行且在前台。
http://highaltitudehacks.com/images/posts/ios4/9.png
下面修改后的应用界面
http://highaltitudehacks.com/images/posts/ios4/IMG_0092.PNG
你看,上方的状态栏是不是不隐藏了。我们再试试修改特定应用的标记数,这个标记数就是应用图标左上角显示的数。它通常等于应用程序接收的推送通知的数量。在mail应用,标记数指的是未读的短信,qq上指的是未读的消息。Yahoo Weather没有推送消息,因此右上角也就没有显示标记数。我们可以设置
让我们尝试去修改一下标记数。这里我调用Objective-C方法来设置标记数的数量,这里设置999。
http://highaltitudehacks.com/images/posts/ios4/9x.png
然后再看一下手机桌面,可以看到右上角有个数字,这个是标记数,已经成功改成999了。
http://highaltitudehacks.com/images/posts/ios4/IMG_0093.PNG
完美!!!
让我们找到更多关于这个APP的相关信息。为了找到当前应用的View Control,我们必须首先找到keyWindow,keyWindow是当前与用户进行用户交互(比如触控)的window。如果你想找到一个应用的所有window,UIApp.window会列举所有的window,请注意window是UIWIndow类。
http://highaltitudehacks.com/images/posts/ios4/10.png
现在,为了找到keyWindow在应用的特定时间,也就是说应用与用户进行用户交互的时间。
http://highaltitudehacks.com/images/posts/ios4/11.png
现在,使用keyWIndow的rootViewController属性来找到这个window的root view controller,root view controller主要负责显示window的内容。
http://highaltitudehacks.com/images/posts/ios4/14.png
正如你所看到的,rootViewController类是YaHooSlidingVIewController,从名字我们可以知道这个class是一个Slider如下图显示的那样。
http://highaltitudehacks.com/images/posts/ios4/IMG_0095.PNG
因此,这个rootViewController在所有其他的View Controller上是充当门面的角色,即专门负责window的内容显示。这意味着菜单的一个菜单项被选中,YahooSlidingViewController负责显示适当的view controller。
References:
Cycript
http://www.cycript.org/
Cycript tricks
http://iphonedevwiki.net/index.php/Cycript_Tricks
举报
使用道具
回复
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
ken
11
主题
54
帖子
20
积分
Ta的主页
发信息
热点动态
1.
Android killer个人自制plus版
2.
Android killer 1.3.1 个人修改版
3.
Arm汇编转换器修改版
4.
跟着鬼哥学so修改,六,实例第三篇
5.
安卓逆向工具JEB3.0来了!
6.
跟着鬼哥学so修改,四,实例第一篇
7.
APK Permission Remover|APK权限修改器去签
8.
一款轻量级App查壳工具(秒查)
快速回复
返回顶部
返回列表