本文主要是介绍iOS逆向重签名(二):IPA包重签名,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录:
1. iOS逆向重签名(一):签名原理
2. iOS逆向重签名(二):IPA重签名
3. iOS逆向重签名(三):微信重签名
一、准备工作
1、解压ipa包
首先我们先从appstore下载一个ipa包,然后把这个包上传到蒲公英分发平台上,可以看出这是一个上架appstore的包。我们就用这个包来进行重签名实验,用另外一套证书进行重签名,生成一个adhoc的包。
选中ipa包,右键 -> 打开方式 -> 解压,如下图所示:
解压之后,会得到一个Payload的文件夹,里面包含一个xxx.app的文件,右键可以用"显示包含内容"的方式打开。
2、替换 embedded.mobileprovision文件
我们需要将自己打包中的embedded.mobileprovision文件替换掉目标ipa中的embedded.mobileprovision。
进入到目标ipa的文件目录下面,我们可以看到有一个embedded.mobileprovision文件,如下图所示:
找一个我们自己打包的ipa包,然后进行解压,进入到ipa的文件目录下,我们同样可以发现一个embedded.mobileprovision文件,如下图所示:
然后将我们自己的embedded.mobileprovision文件替换掉目标ipa文件中的embedded.mobileprovision。
3、生成授权文件(entitlements.plist)
1、将上一步的embedded.mobileprovision文件拷贝一份到Payload文件里面。如下图所示:
2、然后通过embedded.mobileprovision文件用命令行操作生成embedded_full.plist文件。
首先cd到Payload目录下面,通过“security”命令,从mobileprovision文件中生成一个完整的plist文件。
YuanCan:Payload ahdms$ security cms -D -i embedded.mobileprovision > entitlements_full.plist
3、然后通过embedded_full.plist文件用命令行操作生成embedded.plist文件。
YuanCan:Payload ahdms$ /usr/libexec/PlistBuddy -x -c 'Print:Entitlements' entitlements_full.plist > entitlements.plist
二、重签名
需要进行重签名的主要包括两部分,整个的app文件和app文件里面的Framework。Framework文件夹下面的动态库都要进行重签名,否则安装之后会闪退。
1、动态库重签名
打开.app文件目录,文件里面有一个Framework的文件夹,里面包含了项目引用的所有动态库,(如果项目中没有使用任何动态库,当然就不会有这个文件夹,可以忽略此步骤),如下图所示:
重签名命令:$ codesign -f -s “Apple Developer: xxx (xxx)” xxx.framework
//首先要先cd到Frameworks的目录下面,然后在执行如下命令YuanCan:Frameworks ahdms$ codesign -f -s "Apple Distribution: Changsha xxx Information and Technology Co., Ltd. (xxx)" Hyphenate.frameworkHyphenate.framework: replacing existing signature //执行重签名命令之后,会给出这句提示,代表重签名成功
2、.app文件重签名
下面我们要进行app文件重签名,与动态库重签名不同的是,app文件重签名还需要加上授权文件。
重签名命令:$ codesign -f -s “Apple Developer: xxx (xxx)” --no-strict --entitlements=entitlements.plist xxx.app
//首先要先cd到Poyload的目录下面,然后在执行如下命令YuanCan:Payload ahdms$ codesign -f -s "Apple Distribution: Changsha xxx Information and Technology Co., Ltd. (xxx)" --no-strict --entitlements=entitlements.plist HelloWorld.appHelloWorld.app: replacing existing signature //执行重签名命令之后,会给出这句提示,代表重签名成功
3、重新打包
重签名成功之后,我们需要将.app文件重新打包。进入Payload文件夹里面,把下面这三个文件删除掉。
将Payload文件压缩成zip的压缩包,然后将.zip改成.ipa,就重新生成了一个新的ipa包了。
我们来验证一下,是否真的重签名成功了。把Payloda.ipa包上传到蒲公英分发平台上,如下图所示:
现在变成了内存版本了,然后也可以直接安装到手机上。
如果你觉得本篇文章对你有用,请给小编一点鼓励,点赞或打赏,感谢。
这篇关于iOS逆向重签名(二):IPA包重签名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!