ios 自动代码注入dylib脚本并重新打包ipa

 用MonkeyDev 编写好了一个hook库 但是又不想每次把ipa 拖到MonkeyDev里面再用xcode 跑一次

于是乎 懒人计划开始:

直接编写一个脚本 自动注入dylib 打包 签名 批量处理

function pack(){

    clearApp
	#TARGET_IPA_PATH ./src/xx.ipa
	TARGET_IPA_PATH="$1" 
    echo "TARGET_IPA_PATH ${TARGET_IPA_PATH}"
	#解压ipa
	unzip -oqq "${TARGET_IPA_PATH}" -d "${SRCROOT}"
	#TARGET_APP_PATH  ./src/Payload/xx.app
	TARGET_APP_PATH=$(find ${PAYLOAD} -type d | grep "\.app$" | head -n 1) #| head -n 1
	#echo "TARGET_APP_PATH_LIST  ${TARGET_APP_PATH_LIST}"
	index=0

	TARGET_APP_PATH_NEW="${PAYLOAD}/new/${TARGET_NAME}${index}.app"
	echo "TARGET_APP_PATH  ${TARGET_APP_PATH}"
	rm -rf "${TARGET_APP_PATH_NEW}"
	mkdir -p "${TARGET_APP_PATH_NEW}"
	cp -rf "${TARGET_APP_PATH}/" "${TARGET_APP_PATH_NEW}"


	TARGET_APP_PATH="${TARGET_APP_PATH_NEW}" 
	echo "TARGET_APP_PATH new  ${TARGET_APP_PATH}"

	checkApp "${TARGET_APP_PATH}"

	echo "copy dylib ......"
	TARGET_APP_FRAMEWORKS_PATH="${TARGET_APP_PATH}/Frameworks/"
		
	if [ ! -d "${TARGET_APP_FRAMEWORKS_PATH}" ]; then
			mkdir -p "${TARGET_APP_FRAMEWORKS_PATH}"
	fi

	echo "TARGET_APP_FRAMEWORKS_PATH  ${TARGET_APP_FRAMEWORKS_PATH}"
	if [[ ${MONKEYDEV_INSERT_DYLIB} == "YES" ]];then
			cp -rf "${SRCROOT}/libflyDylib.dylib" "${TARGET_APP_FRAMEWORKS_PATH}"
			cp -rf "${FRAMEWORKS_TO_INJECT_PATH}" "${TARGET_APP_FRAMEWORKS_PATH}"
			if [[ ${MONKEYDEV_ADD_SUBSTRATE} != "YES" ]];then
				rm -rf "${TARGET_APP_FRAMEWORKS_PATH}/libsubstrate.dylib"
			fi
			if isRelease; then
				rm -rf "${TARGET_APP_FRAMEWORKS_PATH}"/RevealServer.framework
				rm -rf "${TARGET_APP_FRAMEWORKS_PATH}"/libcycript*
			fi
	fi

    #注入 dylib
	echo "Inject the Dynamic Lib ......"
	APP_BINARY=`plutil -convert xml1 -o - ${TARGET_APP_PATH}.app/Info.plist | grep -A1 Exec | tail -n1 | cut -f2 -d\> | cut -f1 -d\<`
	if [[ ${MONKEYDEV_INSERT_DYLIB} == "YES" ]];then
			echo "Inject the Dynamic Lib1 ......"
			"$MONKEYPARSER" install -c load -p "@executable_path/Frameworks/libflyDylib.dylib" -t "${TARGET_APP_PATH}/${APP_BINARY}"
			"$MONKEYPARSER" unrestrict -t "${TARGET_APP_PATH}/${APP_BINARY}"

			chmod +x "${TARGET_APP_PATH}/${APP_BINARY}"
			echo "Inject the Dynamic Lib2 ......"
	fi

	#代码签名
	echo "codesign ...... "
		#${MONKEYPARSER} codesign -fs "Apple Development: Shengwen Mei (XSYQC73R99)" -t "${TARGET_APP_PATH}"
		#codesign -fs "Apple Development: Shengwen Mei (XSYQC73R99)"  --no-strict --entitlements=entitlements.plist  "${TARGET_APP_PATH}"
	scode=`cat codesign.txt|head -n1`
	echo "scode-> ${scode}"
	${MONKEYPARSER} codesign -i ${scode} -t "${TARGET_APP_PATH}"
	codesign -fs ${scode}  --no-strict --entitlements=./link/entitlements.plist  "${TARGET_APP_PATH}"

	TARGET_BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" "${TARGET_APP_PATH}/Info.plist" 2>/dev/null)
	echo "TARGET_BUNDLE_ID ${TARGET_BUNDLE_ID}"
		#index=$[$index+1]


	cp ./link/createIPA.command "${PAYLOAD}/new/"
	./"${PAYLOAD}/new/createIPA.command"
	mkdir "${SRCROOT}/newipa"
	mv "${PAYLOAD}/new/Target.ipa"  "${SRCROOT}/newipa/${TARGET_BUNDLE_ID}.ipa"
	
	clearApp

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值