iOS app 动态库注入

本文介绍了如何在非越狱环境中向iOS应用注入动态库,通过使用optool工具实现对APP的功能扩展或行为修改。文章提供了相关脚本的使用方法,并提到了重新签名的必要性。此外,还推荐了一个集成解决方案——MonkeyDev。

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

介绍

有时候需要给一个已有的app注入一个动态库,来hook某些函数,从而修改app的某些行为,或者给app增加一些功能等。

下面这个脚本可以将一个动态库或framework注入到一个app中

#!/bin/bash

function usage()
{
    echo 'usage: inject-dylib.sh file.app libxxx.dylib'
    echo '       inject-dylib.sh file.app xxx.framework'
    exit 1
}

function abspath()
{
    echo "$(cd $(dirname "$1"); pwd)/$(basename "$1")"
}

if test $# -ne 2
then
    usage
fi

# app绝对路径
apppath=$(abspath "$1")

# app文件名
appname=$(basename $apppath)

# 可执行文件名
execname="${appname%.*}"

# 可执行文件绝对路径
execpath="$apppath/$execname"

# 动态库绝对路径
dylibpath=$(abspath "$2")

# 动态库文件名
dylibname=$(basename "$dylibpath")

# 动态库扩展名
dylibext="${dylibname##*.}"

# 动态库目的路径
dylibdstpath="$apppath/Frameworks"

mkdir -p "$dylibdstpath"
cp -fR "$dylibpath" "$dylibdstpath" || exit 1

if [ $dylibext = 'dylib' ]
then
    rpath="@rpath/$dylibname"
elif [ $dylibext = 'framework' ]
then
    binname="${dylibname%.*}"
    rpath="@rpath/$dylibname/$binname"
else
    usage
fi

# https://github.com/alexzielenski/optool
optool install -c load -p "$rpath" -t "$execpath"

这个脚本使用optool,所以要先安装这个工具,比如放在/usr/local/bin目录下
因为是非越狱环境,所以注入后需要重新签名才能安装到手机上运行

另一个集成方案
https://github.com/AloneMonkey/MonkeyDev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值