-
-
[原创] 从Mach-O中导出swift对象定义的小工具:SwiftDump
-
发表于:
2020-7-5 17:42
34866
-
[原创] 从Mach-O中导出swift对象定义的小工具:SwiftDump
SwiftDump
项目地址 046K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6F1k6h3W2D9i4K6u0V1N6%4g2Q4x3V1k6e0N6$3W2X3N6p5c8#2L8i4l9`.
SwiftDump是从Mach-O文件中获取swift对象定义的命令行工具,类似大家都用过的OC类dump工具class-dump,SwiftDump专注于处理swift对象(当前只支持swift 5)。对于采用OC/Swift混编的Mach-O文件,你可以将 class-dump 和 SwiftDump结合起来使用。
同时,我在Frida中实现了一个简单版本 FridaSwiftDump。
你可以根据需要选择使用, SwiftDump
可以解析处理Mach-O文件,而 FridaSwiftDump
可以对一个前台运行的app进行解析。
如果你对解析Mach-O的过程感兴趣,请查看该文档最后的配图。
效果演示:

用法
USAGE: SwiftDump [--debug] [--arch ] [--version]
ARGUMENTS:
MachO File
OPTIONS:
-d, --debug Show debug log.
-a, --arch Choose architecture from a fat binary (only support x86_64/arm64).
(default: arm64)
-v, --version Version
-h, --help Show help information.
- SwiftDump ./TestMachO > result.txt
- SwiftDump -a x86_64 ./TestMachO > result.txt
特点
- 完全使用swift编写,项目小巧
- 支持 dump swift 5 的 struct/class/enum/protocol
- 支持解析 enum with payload case
- 支持解析 swift类继承 和 protocol
- 由于采用swift编写,所以借助于swift的运行时函数来还原修饰符(demangle) 比如,
swift_getTypeByMangledNameInContext
和 swift_demangle_getDemangledName
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-7-6 11:56
被butterflydog编辑
,原因: 重传图片