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都會被禁用,便於查錯與修復。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM