引言
同一种架构平台下,每一条汇编指令都有与之对应的机器指令,但是反汇编成某一种高级语言,这个过程是不可逆的。这时候会有一些工具在这个过程中辅助我们把可执行文件“反编译”成对应的汇编语言、高级语言伪代码。
反编译工具一: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*- 在Mac/iOS中,系统是使用
/usr/lib/dyld程序加载动态库 - dyld:动态加载器。 https://opensource.apple.com/tarballs/dyld/
- 在Mac/iOS中,系统是使用
抽取工具制作
- 下载dyld源码后,利用源码中提供的
launch-cache/dsc_extractor.cpp, 编译该文件生成dsc_extractor工具。
- 下载dyld源码后,利用源码中提供的
使用 dsc_extractor 工具抽取目标动态库
dsc_extractor 目标动态库路径 抽取结果存放路径![[100][100]](/2018/05/15/使用class-dump、HopperDisassmbler将反编译进行的更彻底/1.png)
![[100][100]](/2018/05/15/使用class-dump、HopperDisassmbler将反编译进行的更彻底/2.png)
参考文献:
第3章 MacOS工具集


