应用签名-手动签名

获取破壳应用

手动签名是对破壳后的应用进行签名,应用破壳有两种: 一、经过越狱手机获取破壳应用,可参考:《砸壳概述及其原理》; 二、经过PP助手获取越狱应用便可。 将砸壳应用放到桌面或其余方便操做的地方,当前使用的是微信应用:xcode

app.png

签名步骤

一、建立一个WeChat工程,本测试中使用的是xcode自动生成的证书和描述文件,也可使用建立的证书和描述文件,由于都是从苹果服务器申请获取的,参考《应用签名-签名原理》,因此可以对APP进行手动签名。接入真机并编译,获取.app中的描述文件。以下图:bash

create.png

二、右键.app显示包内容复制embedded.mobileprovision到桌面备用,使用命令查看描述文件中的权限配置(Entitlements下的为权限配置):服务器

security cms -D -i embedded.mobileprovision
复制代码

权限文件部分:微信

<key>Entitlements</key>
<dict>
    <key>application-identifier</key>
    <string>48HJPW679W.com.yahibo.WeChat</string>
    <key>keychain-access-groups</key>
    <array>
        <string>48HJPW679W.*</string>
    </array>
    <key>get-task-allow</key>
    <true/>
    <key>com.apple.developer.team-identifier</key>
    <string>48HJPW679W</string>
</dict>
复制代码

三、建立一个plist权限文件,并将embedded.mobileprovision中的权限文件复制到plist中,用来对砸壳应用重签名。架构

Entitlements.png

四、将权限文件移动到桌面或其余方便操做的地方,并将embedded.mobileprovision文件加入到砸壳应用包中(.app右键显示包内容)。以下图:app

mobileprovision.png

五、修改砸壳应用中包中info.plist的惟一标识:ide

info.png

六、给可执行文件执行权限post

chmod +x WeChat
复制代码

七、进入到桌面砸壳应用,由于对Watch中的app没法签名,因此直接删除,Plugins中插件没法被验证不能使用,因此须要删除。 Watch文件(删除):测试

Watch.png

PlugIns文件(删除):spa

PlugIns.png

八、进入Frameworks.app中的文件)文件中对全部库重签名。 1)查看当前安装的证书

security find-identity -v -p codesigning
复制代码

2)使用可用证书对每个库签名

codesign -fs "iPhone Developer: yahibo@qq.com (64R6BCB698)" ProtobufLite.framework
复制代码

注意:签名证书要与工程中使用的证书保持一致

签名使用的证书:

sign1.png

Frameworks下的全部库重签名:

sign2.png

九、签名APP,返回桌面,用已经建立好的权限文件对.app从新签名

codesign -fs "iPhone Developer: yahibo@qq.com (64R6BCB698)" --no-strict --entitlements=Entitlements.plist Payload/WeChat.app
复制代码

在建立工程时自动生成的描述文件中已经包含了测试设备id,签名后app便可安装到测试设备上;若是想添加多台设备,能够本身建立证书,建立描述文件时添加须要安装的设备,重签名使用该证书便可。

安装: 一、签名完以后能够放在xcode中替换原有的.app,直接运行;以下图:

xcode.png

二、打包APP,经过Xcode->window devices安装ipa包。打包命令以下:

zip -ry WeChat.ipa Payload
复制代码

安装ipa

install.png

总结

应用签名步骤以下:

  1. PP助手越狱手机中获取解密ipa包
  2. 建立新应用,并安装至手机,获取.app包中的描述文件;
  3. 从描述文件中获取权限配置,并建立en.plist权限文件;
  4. 进入解密ipa包中的.app文件,移除Plugin插件及Watch文件;
  5. 使用上面建立工程的证书,对解密的.app/Frameworks文件下的库进行重签名;
  6. 将第2步获取的描述文件放入解密的.app包下;
  7. 使用第3步en.plist权限文件对整个.app包进行重签名;
  8. 向手机安装.app包或者打包为.ipa包

注意

在操做过程当中发现如下问题: 一、经过越狱手机获取到的破壳应用,因为手机CPU架构不一样(测试用iPhone5),会致使安装失败; 二、建立的工程获取描述文件时注意,要使用一手描述文件(从新编译描述文件会发生变化,签名APP验证不经过)。

《应用签名-签名原理》

《应用签名-脚本签名》

相关文章
相关标签/搜索