iOS 逆向基础概念笔记

最近有一个需求涉及到逆向相关的知识,于是进一步了解下相关,同时笔记记录下,其中核心流程是:应用砸壳 -> 静态/动态分析 -> 代码注入 -> 打包重签名,最核心的是静态分析和动态调试的咯。

一、获取已经去壳的可执行文件

1-1、通过越狱手机获取到的 iPA 砸壳

  • Clutch
  • dumpdecrypted
  • frida-ios-dump

1-2、或是直接获取到已经去壳的,可通过 PP 助手之类的(不过我最近下的 Mac 版本一直闪退)

  • 可通过 otool -l 可执行文件 | grep crypt 中的结果,cryptid 判断(有壳为1,无壳为0)
  • PS: 可执行文件,可以通过解压 ipa 文件,然后通过显示包内容看到的。
二、静态分析
  • class-dump: 导出所有类的头文件,可以在其中看到类名、公有属性
  • IDA: 反编译工具,可以把机器代码反编译成汇编代码
三、动态调试
  • Reveal: UI 层级解析工具,可以像Xcode一样,解析展示APP的UI层级结构
  • Cycript: 强大的动态调试工具,可以在APP运行的时候,对APP执行查看、改动操作
  • LLDB: 苹果自己提供的动态调试工具, 方便调试
四、代码注入
  • Hook 方法的使用
  • Framework 或者 dylib 的注入

可具体参考李斌同学的文章,真的很详细:

  • iOS 逆向 - shell 脚本自动重签名与代码注入
  • iOS 逆向 - 重签应用调试与代码修改
五、 重签名
  • iOS-App-Signer
    这个工具我一直在使用,确实很方便的
六、 逆向反思
6-1、反逆向相关
  • 编写阶段:对一些功能采用C语言、汇编语言等静态语言编写
  • 编译阶段混淆:代码混淆、硬编码混淆、资源文件混淆、汇编混淆等
  • 运行阶段逆向检测:越狱环境检测、重签多开检测等
  • 运行阶段功能限制:代码开关、封号、封手机等
6-2、学习点
  • 畏惧心态
  • 底层知识的了解
七、End

类型如下字眼

  • dumpdecrypted
  • class-dump
  • IDA
  • Reveal
  • theos
  • insert_dylib
  • yololib

本篇记录主要是了解和眼熟些工具, 在真正操作的时候可以得心应手的,目前个人只实战了一个小功能。

你可能感兴趣的:(iOS 逆向基础概念笔记)