上一篇文章地址:iOS逆向之手机越狱
写了上篇文章后,有位朋友给我留言,iOS 11.0 - 12.4越狱工具
iOS 11.0 - 12.4 用这个更工具更方便.如果你的设备是iOS 11.0 - 12.4系统,可以了解一下这个工具.感谢这位朋友的推荐.
- 我在上篇文章介绍了iOS逆向的准备及如何进行iOS越狱;
- 如果大家对iOS越狱不清楚的话,大家一起解决越狱问题;
- 如果你有任何好的建议,也可以给我留言,我会及时回复大家;
- 本篇文章是介绍iOS逆向的介绍
如果掌握了逆向技术,就如上图一样,应用在你的面前就是透明的,可以俯瞰城堡,所以学习前,我们要对逆向有所了解,才能更好的掌握逆向技术.
1.iOS逆向学习具备条件
-
iOS正向开发者
对iOS语言的了解,界面组件,应用依赖库(第三方库),对代码轻松定位及分析;
汇编知识积累,这是我之前写的汇编文章(汇编系列文章);
底层知识了解;
文件系统结构的了解;
逆向工具的使用,这是我之前写的工具文章(逆向工具集1,逆向工具集2) -
逆向爱好者
已经积累了其他平台的逆向经验,对iOS逆向也产生兴趣 -
想学习的爱好者
在这里,同样鼓励学习.
2.iOS逆向工具
- 逆向过程说实话是枯燥的,有兴趣一定要尝试研究下去,一定要亲自动手.
- 如果你想做好逆向,对应用或者插件分析,没有好用的工具,分析起来是非常困难的.
- 在这里提前给大家介绍一下逆向工具.
这是之前写的工具文章,(逆向工具集1,逆向工具集2),文章中用到工具已经足够,如果你还有更顺手的工具,那就更好了. - 如果你有更好的工具,愿意分享,可以留言给我,我会把它们加进工具文章.
- 在这里我列出常用的工具,后面文章中,我会详细介绍工具如何使用
工具如下:
- 砸壳工具 (Clutch , dumpdecrypted)
- class-dump
- Cycript
- Reveal
- Hopper Disassembler,
- IDA
- LLDB
- Theos等工具
3.逆向流程
选一款应用,我们做一下逆向的话,大致流程是:
- 保证你的手机已经越狱及已经下载好你要逆向的应用(前提)
- 我们对应用进行解密,也就是说到砸壳操作
上架AppStore的应用,都会进行加密,也就是加了一层保护壳,我们需要进行脱壳操作 - 使用class-dump导出头文件,为进行hook做准备
- 分析界面的布局及控件的使用,分析界面可能使用到的类文件
- 有了大致范围,hook相关类,记录参数及方法(函数)的调用执行顺序
- 找到关键的方法(函数),查看调用堆栈
- 静态分析和动态调试分析关键函数的调试逻辑
- 修改函数调用逻辑,验证函数逻辑是不是和自己考虑的一致
- 运行自己的插件或者脚本
如果你做到了前几个步骤,基本操作已经掌握;后面几个步骤,分析起来可能不是很顺利,别灰心.多去尝试,才能获取分析的方法.
4.iOS逆向工程的作用
-
如果是正向开发,加深对系统原理的理解及掌握
比如系统运行机制,正向开发者存在不清楚的系统机制,正好可以加深对系统的理解. -
如果是借鉴别人的开发功能,可以学习一下,实现自己想要的功能.
- 这里我想举一个例子,有一次,在公司开发中,公司应用对网络游戏应用进行加速,加速成功后,帮助用户打开游戏应用,这个时候需要提示用户是否打开已经下载的游戏应用.
- 一般跳转有两种方式进行游戏应用判断,一种是私有方法,这个使用简单,只需要调用几行代码就可以实现,但是不能上架到AppStore.
-
因为不能上架,需要寻找第二种方法,才能实现该功能,正苦于没有办法解决,参考了同类App的功能(同类App上架及实现该功能).最后,通过逆向分析别人开发的功能,了解实现的方式
- 另一种是通过应用的URL Schema,进行软件是否安装判断,结合几行代码就可以完成功能.
- 正因为有了iOS逆向,确定代码实现的类,根据类找到函数方法,通过分析判断方法逻辑实现,确定同样功能的实现逻辑.
-
分析恶意的软件,对应用安全做防护
-
通过对自己所开发的应用分析,是否有漏洞,起到安全保护的作用.
- 一般涉及核心内容,对应用恶意破坏,要适当做些防护措施.
5.应用存在的风险
应用存在的风险分2中情况:
- 越狱机
- 非越狱机
越狱机
- 通过Cydia Substrate 提供的注入(Cydia Substrate 是Cydia APP中安装的插件)
- hook模块注入指定的程序,达到篡改程序的功能
非越狱机
- 通过静态的注入
- 使用fishhook修改增加功能fishhook源码地址
- 通过方法交换,修改函数实现逻辑
6.数据加密处理
应用中一般都会存储很多敏感的数据,这些数据一旦以明文的形式写在代码中,应用很容易被破解,数据也就被截获.
关于应用的数据一般都会做加密处理:
- 静态字符串进行加密
- 网络传输,接口参数进行加密
- 本地存储数据进行加密
7.总结
- 以上内容是对iOS逆向的介绍.
- 学习iOS逆向基本知识还是需要了解的.
- 下一篇文章将要对系统内容进行介绍.
- 如果有你的支持,文章不断更新.
- 请持续关注,也请留言给我.
- 你也可以加入逆向群,大家一起学习.
网友评论