查看私有方法

来源:互联网 发布:数据分析师招聘信息 编辑:程序博客网 时间:2024/06/12 01:36

简介

Class-dump 是一款用来检测存储在 Mach-O 文件里的 Objective-C runtime 信息的命令行工具。他可以检测出 class,category,protocol 的声明。和 'otool -ov' 产生的信息类似,但是 Class-dump 产生的是 Objective-C 语法格式的声明,所以它的可读性更高。

为什么使用 Class-dump

它一个强大的工具。有了它,你可以查看一些闭源的应用,framework 及 bundle。查看不同版本之间接口的变化。体验私有库,或者查看 AppKit 有哪些私有的 API。学习 Mail.app 使用了哪些扩展的私有API。

下载

  • class-dump-3.5.dmg

  • class-dump-3.5.tar.gz

  • class-dump-3.5.tar.bz2

安装

下载完成后把 class-dump-3.5.dmg 内的 class-dump 拷贝到 /usr/bin/ 路径下,并且赋予执行权限。

sudo cp class-dump /usr/bin

sudo chmod 777 /usr/bin/class-dump

使用

class-dump [options] 

where options are: -a 显示实例变量的偏移量。 -A 显示实现的地址。 --arch 从一个通用架构类型的二进制文件(ppc,ppc64,i386,x86_64)中选择一个指定的架构类型。 -C 仅显示匹配正则表达式的类。 -f 在方法命中查找字符串。 -H 在当前目录生成头文件,或者使用 -o 参数指定生成头文件的目录。 -I 对 类,categories,procotols 按照继承关系排序(会覆盖 -s 参数) -o 

指定输出目录,配合 -H 使用。 -r 递归扩展 frameworks,并且修复 VM 共享库。 -s 把类和 categories 按名称排序。 -S 把方法按名称排序 -t 限制输出头,用于测试 --list-arches 列出文件的架构类型, 然后退出 --sdk-ios 指定 iOS SDK 版本 (将会查找 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk --sdk-mac 指定 Mac OS X 版本 (将会查找 /Developer/SDKs/MacOSX.sdk --sdk-root 指定 SDK 完整根路径(或者简单使用 --sdk-ios/--sdk-mac)

实践

我们知道从 App Store 下载的 App 都是经过加密的,有一层壳,我们得先砸壳,本文不讲砸壳,本只讲 class-dump 的使用。

我随机选取了我手机里的一款 App,名字叫《早朝》,是一款简单的 RSS 阅读工具,(说实话,简单到完全没什么逆向的价值)。砸完壳之后的文件可以在 这里下载,然后我们直接对其 dump 一把。

class-dump -H iOSRSS.decrypted -o iOSRSS.h

然后我们可以看到在当前目录下生成了 iOSRSS.h 的文件夹,所有 dump 出来的头文件都在里面了。

然后我们就可以查看每个类,category,protocol 的声明了。


0 0
原创粉丝点击