一.概述
在iOS逆向中是指改變程序運行流程的一種技術
1.Method Swizzle 利用runtime特性,動態改變SEL和IMP對應關係
2.fishhook Fackbook提供的一個動態修改鏈接machO文件的工具,利用machO文件加載原理,通過修改懶加載和非懶加載兩個表的指針達到C函數hook目的
3.Cydia Substrate 原名Mobile Substrate,主要針對OC方法、C函數以及函數地址進行HOOK
二.fishHook
獲取代碼: git clone https://github.com/facebook/fishhook.git
//用來重新綁定符號表的函數,使用它來交換
FISHHOOK_VISIBILITY
//參數一 存放rebinding結構體的數組(可以同時交換多個函數)
//參數二 rebindings數組的長度
int rebind_symbols(struct rebinding rebindings[], size_t rebindings)nel);
struct rebinding {
const char name;//需要HOOK的函數名稱,字符串
void *replacement;//替換到哪個新的函數上(函數指針,也就是函數名稱)
void **replaced;//保存原始函數指針變量的指針(它是一個二級指針)
}