如何在 iOS 二进制文件中打印所有 Objective-C 类的名称?
Posted
技术标签:
【中文标题】如何在 iOS 二进制文件中打印所有 Objective-C 类的名称?【英文标题】:How to print the names of all Objective-C classes in an iOS binary? 【发布时间】:2019-12-05 10:21:31 【问题描述】:我想使用 "otool" 或 "objcdump" 打印在 ios 二进制文件中找到的所有 Objective-C 类的名称。 我在 macOS 上使用未加密的 iOS 二进制文件执行此操作。
我尝试了什么:
-
这里建议的解决方案How to statically dump all ObjC methods called in a Cocoa App?
otool -oV /path to executable/ | grep name | awk 'print $3'
但我不知道如何只解析objective-c 类名。
-
使用“nm”的解决方案,但我不太喜欢它:
nm /path to executable/ | grep _OBJC_CLASS_
你们能帮我用一个 cmd/脚本来打印 iOS 二进制文件中所有 Objective-C 类的名称吗?
【问题讨论】:
除了您“不太喜欢它”之外,方法 2 是否存在实际问题? 【参考方案1】:我猜你不喜欢什么
nm /path to executable/ | grep _OBJC_CLASS_
输出:
0000000100003d08 S _OBJC_CLASS_$_AppDelegate
U _OBJC_CLASS_$_UIResponder
U _OBJC_CLASS_$_UIViewController
0000000100003c90 S _OBJC_CLASS_$_ViewController
是用U
标记的父类。
使用otool
我得到了:
otool -tv /path to executable/|grep ]|awk 'print substr($1,3)'|uniq
比较收益
ViewController
AppDelegate
【讨论】:
以上是关于如何在 iOS 二进制文件中打印所有 Objective-C 类的名称?的主要内容,如果未能解决你的问题,请参考以下文章