日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

逆向-002-iOS重签名

發布時間:2024/10/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逆向-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=96

2.查看本電腦所有證書

$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重签名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。