iOS逆向-入门

892 阅读2分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

为什么学习逆向

  1. iPhone越狱机一台, 毕竟巧妇难为无米之炊嘛.
  2. 学习逆向有助于我们了解iOS底层的实现逻辑, 进而学习其编程逻辑和思维方式, 提高自己的编码能.
  3. 看到别人APP中有实现的牛X的功能, 想仿做一个但是又不知道其实现方式, 那么就可以通过逆向的能力来查看其实现的逻辑.
  4. 当然了想对应的, 别人如果有了逆向的能力, 那么你的APP在他眼中就是裸奔. 所以学习逆向可以保护你APP的关键信息的安全(毕竟你也知道如何破解,那么相对应的就有一定的防护能力).

逆向是个好知识, 但是管好自己, 仅做学习, 莫伸手伸手必被抓

逆向入门必备知识

言归正传, 逆向不是一个好的选择, 相对于正向而言是难的, 并且需要一定的底层基础知识

  1. iOS的正向知识是必须有的, 就好比警察抓小偷, 要先带入小偷的人设思维才能理解小偷为什么要这么做.
  2. APP的签名机制也是必须要了解的, 当然这个基础
  3. 还有iOS逆向的一些工具使用(MonkeyDev, frida-ios-dump, class-dump, restore-symbol, LLDB, IDA, Charles)等.
  4. ARM汇编的能力, 这个能最为重要也是必要考验你的基础实力的, 当然如果不是特别了解汇编的话, 我们还有强大的IDA, 用做一般的逆向直接看伪代码也是可凑合的

逆向简单的入门流程

前置流程

  1. 首先你要拿到目标APP的ipa包
  2. 然后将ipa包中的二进制文件进行脱壳操作
  3. 再使用class-dump将二进制文件的头文件导出
  4. IDA反编译二进制文件

逆向流程

  1. 一般逆向都可以从界面入手, 定位到具体的类和控制器
  2. 然后在类的头文件中通过方法名, 查看是否有我们需要的方法
  3. 找到这个方法名, 通过IDA中查看该方法的汇编实现(当然可以看伪代码)
  4. 通过查看汇编来还原该方法的实现逻辑及调用顺序

逆向成果

拿到目标APP中的核心代码后, 就可以制作插件

  1. 修改目APP中的核心代码
  2. 制作动态插件
  3. 将插件打包进原先的APP中

后面给大家 来个实战😁