iOS攻防-实战(1)-动态注入

本文介绍了iOS动态注入的基本理论和流程,包括ipa包结构、重签名机制,以及如何通过修改ipa文件和使用重签名脚本来实现动态注入。文中详细讲解了如何在xcode中创建重签名项目,编写重签名脚本,并在+ (void)load方法中注入代码,以实现在不修改源码的情况下动态加载库。
摘要由CSDN通过智能技术生成

前言:之前几篇讲了一些背景知识,这一篇进入正题,来讲一下动态注入的基本理论和流程。我们这里通过动态添加运行库的方式来实现动态注入。

ipa包结构

还记得我们之前介绍Math-O文件时,提到了Load commands嘛?其中有一部分是加载第三方库的:

注意其中的:LC_LOAD_DYLIB(AFNetworking)。那么,能否通过修改Math-O文件来加载我们需要动态注入的库呢?答案是肯定的。

实际上,我们打包的ipa文件本质上是一个压缩包,通过修改ipa文件的后缀(ipa->zip),然后解压缩,就能看到ipa文件中的内容:

Payload就是Hello.ipa解压缩后的内容,其中只有一个文件Hello.app。右键点击app文件,选择显示包内容,就能看到app文件的内容:

里面的有些内容是不是感觉很熟悉?注意其中名叫Hello的Unix可执行文件,这个就是我们ipa包中的Path-O文件。但有了这些还不够,我们还需要了解另一个知识:重签名

重签名机制

每一个ipa文件在装到手机中运行前,都需要进行签名(第二篇中有介绍)。实际上,ipa中加载的每一个库在打包进ipa中时,都会进行一次签名。

那么,我们如果想要通过添加自己的三方库来实现动态注入,除了要修改Math-O文件,还需要搞定签名机制。

iOS的重签名机制其实并不神秘,很

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值