逆向-002-iOS重签名
在Windows環境下會有,靜默安裝。通過iOS應用重簽名(安裝app到手機上),蘋果簽名機制,防止未授權的應用進行安裝
①獲取應用ipa
②Codesign重簽名
③Xcode自動簽名
④Shell腳本自動重簽
代碼重簽第三方應用:加密之后不能進行 一些逆向的分析。越獄應用->一些砸過殼的。(注意這里ipa是已經砸殼后的ipa)
簽名工具:codesign
1.查看app的詳細信息(bundleID, 編碼格式, 權限:是否iPhone證書簽名過等), 以查看App是否簽名
$codesign -d -vv WeChat.app
Identifier=com.tencent.xin Format=app bundle with Mach-O universal (armv7 arm64) CodeDirectory v=20500 size=1016155 flags=0x0(none) hashes=15872+7 location=embedded Signature size=4390 Authority=Apple iPhone OS Application Signing Authority=Apple iPhone Certification Authority Authority=Apple Root CA Info.plist entries=56 TeamIdentifier=88L2Q4487U Sealed Resources version=2 rules=26 files=1018 Internal requirements count=1 size=962.查看本電腦所有證書
$security find-identity -v -p codesigning
1) 698A3D09E281F93B74C937B5490DB428CDE06F04 "iPhone Distribution: Migu Comic Co., Ltd. (7WHFE6ZA29)" (CSSMERR_TP_CERT_REVOKED)2) 2DED305CF5E5F83C6EA394D6D5B9B46F6A56F19F "iPhone Developer: huan Wang (V875LC2EQ8)" (CSSMERR_TP_CERT_REVOKED)3.查看App是否加密
1>重定向mach-o(放置代碼的二進制文件),并在桌面生成文件保存 (加密可執行文件)
$ otool -l WeChat > ~/Desktop/123.text
2>查看App是否越獄
$otool -l WeChat | grep cryptid
正常App cryptid 架構? 1
越獄版:? ?cryptid 架構?0
3>運行的時候是否需要解密:是
加密->加殼
解密->砸殼
砸殼:dump 從內存中拿出來 (越獄手機 )
簽名: 密碼學 HASH算法 非對稱算法 簽名機制越獄版:修改,調試,加插件
4.用Codesign對App進行重簽名
①(打開越獄版WeChat.app,顯示包內容)刪除PlugIns、Watch文件夾(無法重簽名)
②重簽FrameWorks目錄下的所有庫(對Frameworks重簽名)
$codesign -fs "iPhone Developer: huan Wang (V875LC2EQ8)" ConfSDK.framework
ConfSDK.framework: replacing existing signature
③給可執行文件執行權限
$chmod +x WeChat
查看可執行文件: WeChat
$ls -l WeChat
-rwxr-xr-x? 1 MengYu? staff? 141838208? 9 28 15:06 WeChat
④拷貝Demo編譯的app包的embedded.mobileprovision描述文件到WeChat的app包中
新建一個工程,添加bundleId,之后點擊Product下的.app顯示包內容,找到embedded.mobileprovision.
拷貝此文件到重簽名的文件夾里面
⑤修改bundleId(把xcode中Demo的BundleID賦值到Wechat的info.plist文件的名字中)
⑥獲取描述文件中的權限文件字段Entitlements,生成entitlements.plist
查看描述文件:
$security cms -D -i embedded.mobileprovision
搜索并復制:Entitlements 這個key和value
新建一個plist文件,粘貼進去,重命名為entitlements.plist
⑦給整個App重簽名
找到entitlements.plist所在文件夾使用以下代碼:
$codesign -fs "iPhone Developer: huan Wang (V875LC2EQ8)" --no-strict --entitlements=Entitlements.plist WeChat.app
WeChat.app: replacing existing signature
查看簽名是否成功:
$codesign -d -vv WeChat.app
查看Authority是否修改成功:
如果是自己的證書就表明簽名成功。
?
打包ipa并安裝App
創建一個Payload文件夾,把 WeChat.app放進去(PlayLoad和plist一個層級,WeChat.app在Payload里面)
打包:
cd ..
$zip -ry WeChat.ipa Payload
編程成功為WeChat.ipa
打開Xcode -> Command+Shift+2-> 點擊添加:
對越獄App進行調試
?XCode->debug -> Attach to Process -> Likely Targets
?通過斷點調試, 注入代碼,上線App沒有描述文件,開發調試才有描述文件。
?
二、利用Xcode重簽名三方應用
①新建同名工程
②修改info.plist
③干掉該干掉的(刪掉Watch和Plugins文件夾)
④重簽名Frameworks
⑤給可執行文件執行權限
$chmod +x WeChat
新建一個項目,build 一下,將Project.app ShowInFinder?
將上個路徑的WeChat.app替換
調試:找到第二個Window iConsoleWindow
可以看到按鈕點擊的事件執行的操作、注入代碼(Framework),執行HOOK操作。
?
三、腳本自動化簽名
①創建同名文件
②添加以下腳本代碼
XCode->TARGET->Build Phases->點擊+號->New Run Script Phase
# ${SRCROOT} 它是工程文件所在的目錄 TEMP_PATH="${SRCROOT}/Temp" #資源文件夾,我們提前在工程目錄下新建一個APP文件夾,里面放ipa包 ASSETS_PATH="${SRCROOT}/APP" #目標ipa包路徑 TARGET_IPA_PATH="${ASSETS_PATH}/*.ipa" #清空Temp文件夾 rm -rf "${SRCROOT}/Temp" mkdir -p "${SRCROOT}/Temp"#---------------------------------------- # 1. 解壓IPA到Temp下 unzip -oqq "$TARGET_IPA_PATH" -d "$TEMP_PATH" # 拿到解壓的臨時的APP的路徑 TEMP_APP_PATH=$(set -- "$TEMP_PATH/Payload/"*.app;echo "$1") # echo "路徑是:$TEMP_APP_PATH"#---------------------------------------- # 2. 將解壓出來的.app拷貝進入工程下 # BUILT_PRODUCTS_DIR 工程生成的APP包的路徑 # TARGET_NAME target名稱 TARGET_APP_PATH="$BUILT_PRODUCTS_DIR/$TARGET_NAME.app" echo "app路徑:$TARGET_APP_PATH"rm -rf "$TARGET_APP_PATH" mkdir -p "$TARGET_APP_PATH" cp -rf "$TEMP_APP_PATH/" "$TARGET_APP_PATH"#---------------------------------------- # 3. 刪除extension和WatchAPP.個人證書沒法簽名Extention rm -rf "$TARGET_APP_PATH/PlugIns" rm -rf "$TARGET_APP_PATH/Watch"#---------------------------------------- # 4. 更新info.plist文件 CFBundleIdentifier # 設置:"Set : KEY Value" "目標文件路徑" /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/Info.plist"#---------------------------------------- # 5. 給MachO文件上執行權限 # 拿到MachO文件的路徑 APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/Info.plist|grep -A1 Exec|tail -n1|cut -f2 -d\>|cut -f1 -d\<` #上可執行權限 chmod +x "$TARGET_APP_PATH/$APP_BINARY"#---------------------------------------- # 6. 重簽名第三方 FrameWorks TARGET_APP_FRAMEWORKS_PATH="$TARGET_APP_PATH/Frameworks" if [ -d "$TARGET_APP_FRAMEWORKS_PATH" ]; then for FRAMEWORK in "$TARGET_APP_FRAMEWORKS_PATH/"* do#簽名 /usr/bin/codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$FRAMEWORK" done fi小建議:微信重簽名不要登錄微信賬號, 微信檢測如果bundleID不一致會被封號
為防止App重新簽名,微信檢測不是合法的bundleId就退出 exit
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/StevenHuSir/p/ReSignature.html
總結
以上是生活随笔為你收集整理的逆向-002-iOS重签名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何正确清洗厨房的油烟机?
- 下一篇: 海尔空调显示f8是什么问题?