1、简介

classdump-dyld 顾名思义就是把Mach-O文件夹的class信息给动态的dump出来,生成对应的.h头文件,它需要依赖Cycript环境使用。有些情况是无法通过class-dump导出头文件的,比如SpringBoard的可执行文件无法利用class-dump导出头文件。

2、安装

在iPhone上用Cydia安装classdump-dyld:
image.png

3、API

classdump-dyld有下面几个用法:
导出某个类的头文件:
cy# classdumpdyld.dumpClass(SpringBoard)
导出整个Bundle的所有头文件:
cy# classdumpdyld.dumpBundle([NSBundle mainBundle])
cy# classdumpdyld.dumpBundle([NSBundle bundleWithIdentifier:@”com.apple.UIKit”])
根据一个类导出这个类所在Bundle的全部头文件:
cy# classdumpdyld.dumpBundleForClass(SBIconView)

4、使用

以SpringBoard为例,进入cycript环境:
$ cycript -p SpringBoard
导入classdump-dyld头文件:
cy# @import net.limneos.classdumpdyld
导出SBIconView所在Bundle的全部头文件:
cy# classdumpdyld.dumpBundleForClass(SBIconView)

  1. @"Wrote all headers to /tmp/SpringBoardHome"

导出的头文件存放在iPhone的/tmp/SpringBoardHome目录下:
image.png