CDUnknownBlockType获取参数的方法

CDUnknownBlockType

在iOS开发过程中大家都会使用block,可在逆向开发的时候block就显得不是很友好了…

class-dump是用来dump目标文件的类信息的工具。它利用Objective-C语言的runtime的特性,将存储在mach-O文件中的@interface和@protocol信息提取出来,并生成对应的.h文件

执行完class-dump之后,获得的头文件中所有的block都会写成CDUnknownBlockType

class-dump之后的一个头文件
如果想获得block里面的参数可以将CDUnknownBlockType改写成id(这时直接运行Xcode是不会报错的)

这里是重点(敲黑板)

现在使用CTBlockDescription就可以打印出block的参数了



第三个参数block
分析一下三个参数:
  • 第一个参数@? block底层调用的时候默认以block结构体自身作为第一个隐含参数
  • 第二个参数类型是NSURLSessionDataTask
  • 第三个参数是id

然后我们就可以把CDUnknownBlockType改成一个block 就可以在别的地方使用了

typedef void(^apiSuccessBlock)(NSURLSessionDataTask *task, id _Nullable responseObject);


CTBlockDescription下载地址 https://github.com/wanyawan/CTBlockDescription
拖入工程就可以直接使用

你可能感兴趣的:(CDUnknownBlockType获取参数的方法)