iOS 逆向 day03 Cycript Reveal class-dump Hopper Disassembler

一、使用 Cycript 动态修改 iPhone 真机运行中的 App

  1. 下载封装好语法的 cy 文件 下载地址 MJCript

  2. 将下载好的 MJCript 复制到 iPhone 的 usr/lib/cycript0.9 目录下.

  3. 启动需要动态修改的 App

  4. 命令行cycript -p ting进入喜马拉雅 App 的 cycript 模式

  5. @import mjcript 导入我们的 cy 库

  6. 立即登录 动态修改为 demo

修改前(立即登录)
修改后(demo)

二、使用 Reveal 查看其他优秀 APP 的页面结构

使用 Reveal 工具查看 喜马拉雅 APP 页面结构

我们有时候需要参考一些优秀 App 的设计理念,这时候我们就可以用 reveal 来查看了。

  1. 安装 reveal (mac 软件)免费版下载地址 密码:obyu

  2. 在手机上通过 Cydia 安装 Reveal2loader

  3. 在手机设置页面开启 Reveal 对 App 的访问权限

iPhone打开 Reveal 权限入口
  1. 将 Mac 电脑中,此路径 /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework 下的 RevealServer 复制到电脑桌面并重命名为 reveal2Loader.dylib

  2. reveal2Loader.dylib 复制到 iPhone 的 /Library/MobileSubstrate/DynamicLibraries (里面有一个同名文件,覆盖它)

  3. 重启手机,或者输入 killall SpringBoard ,然后打开 App,即可在电脑中看到iPhone 打开的 App,可以点击查看了。

    mac 上的 reveal

三、逆向 APP 的思路

  1. 页面分析
  • Cycript
  • Reveal
  1. 代码分析
  • 对 Mach-O 文件的静态分析
  • MachOView
  • class-dump
  • Hopper Disassembler
  • ida
  1. 动态调试
  • 对运行中的 APP 进行代码调试
  • dbugserver
  • LLDB
  1. 代码编写
  • 注入代码到 APP 中
  • 必要时还可能需要重新签名、打包 ipa

四、 class-dump

顾名思义,它的作用就是把 Mach-O 文件的 class 信息给 dump 出来(把类信息给导出来),生成对应的 .h 头文件

  • 官方下载地址 http://stevenygard.com/projects/class-dump/
  • 下载完工具包后,将 class-dump 可执行文件复制到 /usr/local/bin 目录,这样在终端就能识别 class-dump 命令了。
  • 常用格式
    class-dump -H Mach-O文件路径 -o 头文件存放目录
  • 这样只能 dump 出未加密和越狱的 Mach-O 文件,现在基本还要进行砸壳处理。

五、 Mac 终端命令识别小知识补充

  • 首先 Mac 会去 /usr/bin 里面找,里面有比如常用的 cd 指令。
  • /usr/bin 这个目录现在默认是不可写入的。
  • 如果Mac 还未找到用户输入的指令,那么它会去 Mac 的 /usr/local/bin 目录下寻找
  • 如果我们要给系统添加一些可执行命令,就添加到 /usr/local/bin 目录下

六、Hopper Disassembler

Hopper Disassembler 能够将 Mach-O 文件的机器语言代码反编译成汇编代码、OC 的伪代码和 Swift 的伪代码。

反编译结果

七、Xcode 项目编译过程

同一种架构平台下,每一条汇编指令都有与之对应的唯一机器指令

  • 代码 编程成 汇编语言 再编译成 机器语言
  • 机器语言 可以反编译成 汇编语言 可以反编译成 OC伪代码(只能是伪代码,不能唯一确定)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容