用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
}