iOS 逆向基础概念笔记

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

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

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

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 的注入

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

五、 重签名
六、 逆向反思
6-1、反逆向相关
  • 编写阶段:对一些功能采用C语言、汇编语言等静态语言编写
  • 编译阶段混淆:代码混淆、硬编码混淆、资源文件混淆、汇编混淆等
  • 运行阶段逆向检测:越狱环境检测、重签多开检测等
  • 运行阶段功能限制:代码开关、封号、封手机等
6-2、学习点
  • 畏惧心态
  • 底层知识的了解
七、End

类型如下字眼

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容