郑重声明:这篇文章,或者后续本人关于逆向的文章,其内容只是技术讨论,不要随意进行恶意的商业活动。否则后果自负。

可能很多人见过别人安装多个微信在手机中,想知道是怎么回事儿,这篇文章就将告诉你。

因为苹果需要对App的安装和使用进行控制,苹果服务器对App加了签名验证,所以不能像安卓那样随便来个包就安装到手机上。

苹果的签名是我们前几篇文章中介绍到的RSA完成的,想要破解是肯定不行的,我们想要安装只能不使用它的签名,使用自己的签名,这就是重签名。

先行都是获取IPA

我们这里以重签微信为例,首先需要获取微信的IPA,有三种方式:

  1. pp助手(或者别的助手)中下载,这是已经砸壳的包,可以直接使用;
  2. 越狱手机中直接copy,当时是copy非正版的包;
  3. iTunes 12.6.3 中下载官方的IPA,但是需要砸壳,网络上有砸壳工具。

为搞明白重签名的原理,我们先进行手动签名。

手动签名

手动签名比较复杂,我们真正开发中是用的很少的,但是有助于明白其中的原理。如果你在按照步骤操作的过程中出现了一些不明所以的问题,不用着急,明白步骤就行,主要看下面的利用Xcode重签和shell脚本重签。

拿到已经砸壳的IPA过后,解压缩,显示包内容,对其中的文件按照这个步骤进行操作。

第一步、删除不能进行签名的部分,有PlugIns的文件夹。

Watch文件文件夹中也包含可执行文件,需要删除。

第二步、签名frame。需要将framework一个一个的进行签名。

这里介绍一个命令,方便你可以列出可以进行签名的证书,命令:$security find-identity -v -p codesigning 。

签名命令:$Codesign –fs “证书串” 文件名 强制替换签名。

第三步、替换描述文件

1、新建一个工程,运行一下,从Products中ShowInFinder,显示包内容,拿到描述文件。

2、将描述文件copy到微信的包中去。

3、修改微信in中的bundleID为描述文件中的bundleID。

4、这个命令可以查看描述文件信息:$security cms -D -i .. 。

5、将描述文件中的entitlements中的这部分内容copy出来,重现创建一个plist文件。

6、将这个创建好的plist文件放在已经修改过的微信IPA同级目录中。

第四步、签名这个App。

命令: $codesign -fs “证书串” --no-strict --entitlements=权限文件.plist APP包 。

第五步、打包。

命令:$Zip –ry 输出文件 输入文件 将输入文件压缩为输出文件

第六步、通过Xcode安装IPA,运行即可。

Xcode签名

手动签名实在繁琐,而且需要处理的细节部分太多,明白了其中的过程,让我们还是通过Xcode来完成吧。Xcode会帮我们完成对于App的签名,但是其中对于Framework的签名和bundleID的修改还是需要自己完成的。

通过Xcode建一个同名工程后。

第一步、仍然是把应该删除的内容先删除掉。

第二步、更改In中的bundleID。

第三步、替换我们的同名成功App包。

第四步、第一次安装需要信任签名。

第五步、Commond + R,然后就成功了。

shell脚本自动签名

Xcode签名还需要修改一下东西,shell完全自动化操作,让我们的操作直接飞起来。明白其中语句含义,将来签名其它的App也只需要稍作修改。

第一步、通过Xcode建一个同名功能后,在工程目录中创一个叫APP的文件夹,并将IPA包放进去。

第二步、然后在Build Phases中创建一个Script。

第三步、输入下面的脚本:

# ${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. 更新in文件 CFBundleIdentifier # 设置:"Set : KEY Value" "目标文件路径" /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $PRODUCT_BUNDLE_IDENTIFIER" "$TARGET_APP_PATH/In" #---------------------------------------- # 5. 给MachO文件上执行权限 # 拿到MachO文件的路径 APP_BINARY=`plutil -convert xml1 -o - $TARGET_APP_PATH/In|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

当然这个文件可以放在外面,不是直接写在工程中。

在脚本中写出找到这个文件的路径,就可以直接执行了。

但是在执行中这个文件肯定会缺乏执行权限,那么我们需要给它加上,进到这个文件目录,执行命令:chmod +x 。

使用脚本或者Xcode进行重签都非常简单。这样,我们就可以在iPhone中安装多个相同的App啦。

(熟悉的暗号:e8129245b35bae61484a3c2f4ed5e037)

1.《ios7怎么下微信2017看这里!iOS逆向|iPhone不从App Store也能安装应用,还可以装多个微信》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《ios7怎么下微信2017看这里!iOS逆向|iPhone不从App Store也能安装应用,还可以装多个微信》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3062521.html