Hook原理--逆向开发

本文详细介绍了逆向开发中的Hook技术,包括Method Swizzle、Cydia Substrate和fishHook。重点讲解了fishHook的工作原理,并通过实例展示了如何使用fishHook替换C函数。通过对符号表的查看,阐述了fishHook如何根据函数名称找到对应地址,实现Hook。
摘要由CSDN通过智能技术生成

今天我们将继续讲解逆向开发工程另一个重要内容--Hook原理讲解。Hook,可以中文译为“挂钩”或者“钩子”,逆向开发中改变程序运行的一种技术。按照如下过程进行讲解

  1. Hook概述
  2. Hook技术方式
  3. fishhook原理及实例
  4. 符号表查看函数名称
  5. 总结

一、Hook概述

在逆向开发中是指改变程序运行流程的技术,通过Hook可以让自己的代码运行在别人的程序中。需要了解其Hook原理,这样就能够对恶意代码攻击进行有效的防护。

二、Hook技术方式

2.1 Method Swizzle方式

Method Swizzle 上次已经讲到,是利用OC的Runtime的特性,去动态改变SEL(方法编号)与IMP(方法实现)的对应关系,达到OC方法调用流程更改的目的。也是主要用于OC方法。

2.2 Cydia Substrate方式

Cydia Substrate 原名叫做Mobile SubStrate,主要作用为针对C函数,OC函数以及函数的地址进行Hook操作。并且有个很大的优势,Cydia Substrate 并不是仅仅是针对iOS设计,Andriod一样也可以使用。

2.2.1

Cydia Substrate定义了一系列的函数和宏,底层调用了objc的runtime和fishHook来替代目标函数或者系统方法。

其中有两个函数

  • MSHookMessageEx主要用于OC方法
void MSHookMessageEx(Class class, SEL selector, IMP replacement, IMP result)
  • MSHookFunction主要用于C++和C函数
void MSHookFunction(voidfunction,void* replacement,void** p_original)

2.2.2 MobileLoader

MobileLoader主要用于加载第三方dylib运行的应用程序中。启动时MobileLoader会根据指定的第三方动态库加载进去,第三方动态库也是我们写的破解程序。

2.2.3 safe mode

破解程序的本质在于dylib,寄生于别人程序进程中。但是系统进程一旦出现错误,可能会导致整个进程崩溃,也可能会导致iOS程序崩溃。在Cydia Substrate 中引入了安全模式,如果一旦错误,三方的dylib会被禁用,便于查错和修复。

2.3 fishHook

fishHook是Facebook提供一种动态修改链接Mach-O文件的工具。此利用Ma

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值