iOS逆向之HOOK原理

iOS逆向之HOOK原理

HOOK概述

HOOK(鉤子) 其實就是改變程序執行流程的一種技術的統稱!
image.png

iOS中HOOK技術的幾種方式

1、Method Swizzle

   利用OC的Runtime特性,動態改變SEL(方法編號)和IMP(方法實現)的對應關係,達到OC方法調用流程改變的目的。主要用於OC方法

2、fishhook

   它是Facebook提供的一個動態修改鏈接mach-O文件的工具。利用MachO文件加載原理,通過修改懶加載和非懶加載兩個表的指針達到C函數HOOK的目的。

3、Cydia Substrate

   Cydia Substrate 原名爲 Mobile Substrate ,它的主要作用是針對OC方法、C函數以及函數地址進行HOOK操作。當然它並不是僅僅針對iOS而設計的,安卓一樣可以用。官方地址:http://www.cydiasubstrate.com/

Cydia Substrate主要由3部分組成:

  • MobileHooker

       MobileHooker顧名思義用於HOOK。它定義一系列的宏和函數,底層調用objc的runtimefishhook來替換系統或者目標應用的函數.
    其中有兩個函數:

    • MSHookMessageEx 主要作用於Objective-C方法
     void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP result)
    
    • MSHookFunction 主要作用於C和C++函數
     void MSHookFunction(voidfunction,void* replacement,void** p_original)
    

    Logos語法的%hook 就是對此函數做了一層封裝

  • MobileLoader

       MobileLoader用於加載第三方dylib在運行的應用程序中。啓動時MobileLoader會根據規則把指定目錄的第三方的動態庫加載進去,第三方的動態庫也就是我們寫的破解程序.

  • safe mode

       因爲APP程序質量參差不齊崩潰再所難免,破解程序本質是dylib,寄生在別人進程裏。 系統進程一旦出錯,可能導致整個進程崩潰,崩潰後就會造成iOS癱瘓。所以CydiaSubstrate引入了安全模式,在安全模 式下所有基於CydiaSubstratede 的三方dylib都會被禁用,便於查錯與修復。

發佈了39 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章