class-dump是逆向工程中的利器,用來dump目標(biāo)對象的class信息工具。它利用Object-C語言的runtime特性,將存儲(chǔ)在Mach-O文件中的@interface和@protocol信息提取出來,并生成對應(yīng)的.h文件。
在安裝和使用過程中,遇到了兩個(gè)問題,將原因和解決辦法分享一下。
問題1:class-dump無法拖入/usr/bin目錄
原因:Mac當(dāng)前系統(tǒng)為Mac OS X 10.11 El Capitan,對于Mac OS X 10.11 El Capitan用戶,由于系統(tǒng)啟用了SIP(System Integrity Protection), 導(dǎo)致root用戶也沒有權(quán)限修改/usr/bin目錄。
解決辦法:重啟Mac,按住command+R,進(jìn)入recovery模式。選擇打開Utilities下的終端,輸入:csrutil disable并回車,然后正常重啟Mac即可。
問題2:class-dump -H時(shí)報(bào)Error: Cannot find offset for address 0x580000000100bcd8 in stringAtAddress: 錯(cuò)誤
錯(cuò)誤截圖
原因:http://bbs.iosre.com/t/xue-xi-yong-dumpdecryptedgei-appza-ke-suo-yu-dao-de-wen-ti/813 我在iosre看到一篇帖子說是項(xiàng)目中可能用到了swift,后來經(jīng)過證實(shí),該項(xiàng)目確實(shí)是用OC和Swift混編。class-dump是利用Object-C語言的runtime特性,提取頭文件,因此我認(rèn)為應(yīng)該是這個(gè)原因。大家如果有不同見解,望告知。