美文网首页
iOS逆向之介绍

iOS逆向之介绍

作者: 木子心语 | 来源:发表于2023-08-29 15:58 被阅读0次

    上一篇文章地址: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 Substrate 是Cydia APP中安装的插件)
    • hook模块注入指定的程序,达到篡改程序的功能

    非越狱机

    • 通过静态的注入
    • 使用fishhook修改增加功能fishhook源码地址
    • 通过方法交换,修改函数实现逻辑

    6.数据加密处理

    应用中一般都会存储很多敏感的数据,这些数据一旦以明文的形式写在代码中,应用很容易被破解,数据也就被截获.
    关于应用的数据一般都会做加密处理:

    • 静态字符串进行加密
    • 网络传输,接口参数进行加密
    • 本地存储数据进行加密

    7.总结

    • 以上内容是对iOS逆向的介绍.
    • 学习iOS逆向基本知识还是需要了解的.
    • 下一篇文章将要对系统内容进行介绍.
    • 如果有你的支持,文章不断更新.
    • 请持续关注,也请留言给我.
    • 你也可以加入逆向群,大家一起学习.

    相关文章

      网友评论

          本文标题:iOS逆向之介绍

          本文链接:https://www.haomeiwen.com/subject/gjznmdtx.html