在逆向分析的過程中我們時(shí)常會(huì)遇到blockde函數(shù) 一般class-dump出來的函數(shù)會(huì)自動(dòng)將block編譯成CDUnknownBlockType的類型 下面我們用一個(gè)例子看一下?
2.我們通常會(huì)將CDUnknownBlockType手動(dòng)改成id類型來動(dòng)態(tài)調(diào)試函數(shù)
3.動(dòng)態(tài)獲取arg2 打印參數(shù)
invode代表block具體實(shí)現(xiàn)的地址
signture代表block字符串的數(shù)字簽名
4.通過NSMethodSignature找出它的參數(shù)類型:
po[NSMethodSignature signatureWithObjCTypes:"v32@?0@\"NSArray\"8@\"NSMutableArray\"16@\"NSError\"24"]
is special struct return? NO 代表block沒有返回值第一個(gè)參數(shù)代表我們自己的block 第二個(gè)代表數(shù)組 第三個(gè)代表數(shù)組 第四個(gè)代表NSError對(duì)我們最有用的 type encoding 字段肩祥,這些符號(hào)對(duì)應(yīng)的解釋可以參考?Type Encoding 官方文檔拥褂。