编写dylib_Dylib 注入

本文详细介绍了在iOS应用中进行dylib动态库注入的步骤,包括动态库的配置、解决路径问题、架构匹配、签名问题以及遇到的挑战。过程中涉及到Xcode的配置、Mach-o文件的处理和注入工具的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作:

像往常一样,创建项目,创建脚本,引入固定的脚本。

动态库 配置

添加 动态库 (Dynamic)

image.png

IOS 下已经没有这样的库了,framworks 代替了。

选择刚刚添加的动态库,编译:

image.png

动态库 文件目录

可以发现添加的动态库加载上了,但是是在 Debug 目录下的。

切回到工程目标,添加动态库的依赖关系,编译:

image.png

image.png

报错,但是细看可以看到查找的目录是在 Debug-iphoneos 目录下,肯定没有了,

image.png

解决方式:

把动态库拷贝到 Debug-iphoneos 目下。

修改工程动态库编译路径。

image.png

这个环境变量

$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

在不同的 Target 下,是不一样的;

手动修改 $(BUILD_DIR)/Debug-iphoneos

动态库的 Products 目录 配置:

动态库的 Products 目录 配置

要选择相应的 Target 编译。

image.png

这时候 动态库就写入 Mach-o 文件中了:

image.png

配置 OK !

自我感觉修改路径着实麻烦,快被搞蒙蔽了,还是手动拖入/拷贝 来的快。

注入过程

上面动态库配置接下来就开始注入过程,其实有没有想到一个问题?

我们添加的动态库是什么架构呢?

先进入 App 包中,cd Frameworks ;

file libQCHOOK.dylib

libQCHOOK.dylib: Mach-O 64-bit dynamically linked shared library x86_64

x86 架构的。

注入:

注入 Mach-o 后,签名就破坏了,但是 编译,xcode 会帮我们重新签名 整个 App, 但是 Xcode 不会帮我们签名整个 frameworks / dylib, frameworks / dylib 在创建后编译时就需要签名了, Xcode 就不会再次签名,所以我们在 shell 中才需要对 framework 签名,签名后 注入 修改的是 Mach-o 文件,注入后,xcode 会重签名。

修改注入脚本:

# ---------------------------------------------------

# 7. 注入我们编写的动态库

echo "开始注入 📱📲"

# 需要注入的动态库的路径 这个路径每次修改 🌴📱📲🌴📱📲🌴📱📲🌴📱📲🌴📱📲

INJECT_FRAMEWORK_RELATIVE_PATH="Frameworks/libQCHook.dylib"

# 通过 yololib 工具注入

yololib "$TARGET_APP_PATH/$APP_BINARY" "$INJECT_FRAMEWORK_RELATIVE_PATH"

echo "注入完成 📱📲"

注入过程:

image.png

编译运行,两种不同的架构:

崩溃信息

更改架构:

image.png

image.png

但是仅仅更改这些还不够,一系列的都需要改,BaseSDK...

image.png

好吧,忽略掉上面繁琐的过程,还不一定成功,接下来才是真正??正确的修改步伐:

修改上面的 BaseSDK,修改 为 IOS

Mac OS

iOS 架构

接下来,第二步,修改 Code Signing identity 为 iOS Developer。

OK ,就这两步,搞定,其它的都不不要修改。

还有一个低级错误,添加 脚本时,别选错 Target 了,又是二的不行。

编译运行:

一直还是报错,

app 包所在目录中的

image.png

APP 包 中的 Frameworks 一直没有

一直没能找到为什么呢???

image.png

yololib WeChat Frameworks/ibQCHook.dylib

手动修改,添加进也不行,

image.png

要吐血了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值