使用class-dump、HopperDisassmbler将反编译进行的更彻底

引言

同一种架构平台下,每一条汇编指令都有与之对应的机器指令,但是反汇编成某一种高级语言,这个过程是不可逆的。这时候会有一些工具在这个过程中辅助我们把可执行文件“反编译”成对应的汇编语言、高级语言伪代码。

反编译工具一:class-dump

  • 作用是把Mach-O文件的class信息给dump出来,生成对应的.h文件
  • 下载地址: http://stevenygard.com/projects/class-dump
  • class-dump,复制到 Mac 的 /usr/local/bin 路经下。
  • 提取命令:class-dump -H Mach-O文件路径 -o 头文件存放路径

反编译工具二:Hopper Disassmbler

  • 作用是能够将Mach-O文件的机器语言代码“反编译成汇编代码”

  • 应用:抽取动态库共享缓存中的UIKit框架

    • 路径:/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm*

    • 抽取工具制作

      • 下载dyld源码后,利用源码中提供的 launch-cache/dsc_extractor.cpp, 编译该文件生成 dsc_extractor 工具。
    • 使用 dsc_extractor 工具抽取目标动态库

      • dsc_extractor 目标动态库路径 抽取结果存放路径

参考文献:

第3章 MacOS工具集

iOS应用逆向工程 第二版沙梓社 吴航(著)