iOS 재서명 적용
코드 재서명
서명 메커니즘
iOS 서명은 코드sign 명령을 사용해야 합니다. 이 명령의 사용법을 이해하면 서명 메커니즘에 대한 이해를 높일 수 있습니다.
가장 간단한 상황은 서명 가능한 인증서로 파일에 서명하는 것이다
codesign -s "iPhone Distribution: Xiaoxuan Chen (CXJ8TF54LW)" mix.sh
인증서 서명을 사용하면 신분과 코드의 완전성을 확인할 수 있지만 응용 실행은 다른 제한을 받아 서명할 때 응용 권한을 지정할 수 있다.
codesign -fs "iPhone Distribution: Qinda Zhuang (287VV6UT6R)" --entitlements=/Users/wangxuefeng/Desktop/CITest/entitlements.plist Live.app
entitlements.plist에 응용 권한이 저장되어 있습니다.
entitlements를 직접 만들지 않았습니다.plist, 그러나 우리가 응용 권한을 수정할 때, 예를 들어 전송을 열면entitlements가 변경됩니다.entitlements 정보는 provisioning profiles에 저장됩니다.
재서명
이미 있는 파일 서명 제거: 프로그램의 서명은 모두 한 파일에 있습니다CodeSignatue/CodeResources 는 서명하는 동안 파일이 재생성되므로 제거하지 않아도 됩니다.provisioning profiles: provisioning profiles를 제거하면 응용 프로그램에 복사됩니다. 이름은embedded입니다.mobileprovision, 이 파일 삭제
CFBundleIdentifier
# Plist,Plist
defaults write /Users/wangxuefeng/Desktop/ci/Live.app/info.plist "CFBundleName" " Top"
defaults write /Users/wangxuefeng/Desktop/ci/Live.app/info.plist "CFBundleDisplayName" " Top"
defaults write /Users/wangxuefeng/Desktop/ci/Live.app/info.plist "CFBundleIdentifier" "com.fungo.loveshowtop"
# iPhone Distribution: Qinda Zhuang (287VV6UT6R) ,
codesign -f -s "iPhone Distribution: Qinda Zhuang (287VV6UT6R)" --entitlements entitlements.plist Live.app
#
codesign --verify Live.app
#
codesign -vv -d Live.app
#
security find-identity -v -p codesigning
# entitlements.plist
security cms -D -i Live.app/embedded.mobileprovision > t_entitlements_full.plist
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' t_entitlements_full.plist > entitlements.plist
resign.sh
workspace=~/Desktop/CITest
payloadDirectory=${workspace}/Payload
entitlementsPlistPath=${workspace}/entitlements.plist
rm -rf payloadDirectory
mkdir payloadDirectory
cp -r $1 Payload
provisioningFile=$3
appName=Live.app
appBundlePath=${payloadDirectory}/${appName}
appBundleInfoPlist=${appBundlePath}/Info.plist
appBundleProvisioningFilePath=${appBundlePath}/embedded.mobileprovision
# info.plist CFBundleResourceSpecification
defaults delete $appBundleInfoPlist "CFBundleResourceSpecification"
# embedded.mobileprovision
rm $appBundleProvisioningFilePath
# embedded.mobileprovision app
cp -R "${3}" $appBundleProvisioningFilePath
# embedded.mobileprovision
security cms -D -i $appBundleProvisioningFilePath > ${workspace}/t_entitlements_full.plist
/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' ${workspace}/t_entitlements_full.plist > ${entitlementsPlistPath}
# appID
applicationIdentifier=`defaults read ${entitlementsPlistPath} "application-identifier"`
newBundleId=${applicationIdentifier#*.}
#
bundleExecutable=`defaults read $appBundleInfoPlist "CFBundleExecutable"`
chmod 755 ${appBundlePath}/${bundleExecutable}
# bundleid, .app .appex info.plist
oldBundleId=`defaults read ${appBundleInfoPlist} "CFBundleIdentifier"`
# if $newBundleId != $oldBundleId then
echo changing Bundle id $appBundleInfoPlist $newBundleId
defaults write $appBundleInfoPlist "CFBundleIdentifier" $newBundleId
# fi
#
for file in `ls $appBundlePath/Frameworks`
do
codesign -vvv -fs "$2" --no-strict --entitlements=${entitlementsPlistPath} $appBundlePath/Frameworks/$file
done
codesign -vvv -fs "$2" --no-strict --entitlements=${entitlementsPlistPath} $appBundlePath
#
codesign -v $appBundlePath
호출
sh resign.sh /Users/wangxuefeng/Desktop/ci/Release-iphones/Live.app "iPhone Distribution: Qinda Zhuang (287VV6UT6R)" /Users/wangxuefeng/Library/MobileDevice/Provisioning\ Profiles/1fb19f15-021a-40ac-9f4f-d33fe1a1d138.mobileprovision
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.