本demo以通訊錄的c function為例 hook其中的一個(gè)c function。
app為
這個(gè)app是在獲取通訊錄的授權(quán)之后屋谭,獲取每一個(gè)通訊錄名片的詳細(xì)信息 此處要hook的是 ABAddressBookCopyArrayOfAllGroups 這個(gè) C函數(shù)
hook細(xì)節(jié)為
步驟為
1:首先對(duì)需要hook的函數(shù)的一個(gè)extern的定義
2:對(duì)old函數(shù)和新函數(shù)的聲明,注意 需要在新函數(shù)里實(shí)現(xiàn)對(duì)舊函數(shù)的實(shí)現(xiàn) 類(lèi)似%orig爷辙,否則的話(huà)這個(gè)函數(shù)將會(huì)失去原始的功能
3:在%ctor初始化中 使用substrate提供的 MSHookFunction實(shí)現(xiàn)對(duì)C Function的替換
結(jié)果為