四:App重签名

2019-01-29  本文已影响0人  Ray_lawq

一:使用codesign (终端命令行)工具来实现

  1. 先查看App是否越狱(查看MachO文件),如果crytpid 为0越狱,非0,就是没有越狱(例如1,就是以 “1” 这种方式加密的)



    [注]:为什么cryptid 有2个?说明2个框架(arm64,arm),当前文件是一个胖二进制文件。

  2. 删除App包里边的 PlugIns 和 Watch 文件夹,里边库文件重签不了。

  3. 重新签名Frameworks里边的三方库(使用钥匙串里边你能用的证书)
    3.1查看钥匙串里边所有的证书:



    3.2 使用证书自己的证书重签名库全部的库文件


    3.3 查看App 包里边同名的执行文件是否有执行的权限(一般情况下是有的,如果没有,请修改文件的权限)

  4. 创建一个新的工程(或者使用一个老的工程)拿到你重签framework时候使用的证书对应的描述文件,并拷贝进入app包里边(显示原文件里边)

  5. 修改info.plist 文件的budle ID(因为描述文件和目标APP的ID不统一,想要重签,只能修改目标文件的budle ID)

  6. 创建权限文件
    6.1使用终端命令查看描述文件($security cms -D -i +描述文件)


    6.2找到权限文件(Entitlements 段落)


    6.3拷贝整个内容,新建一个plist文件(文件名字必须是entitlements.plist,否则后果自负)


  7. 把entitlements.plist 和 重签好的目标APP放到同一级目录下,重新签名整个APP(上边只是重签库文件)


  8. 到目前为止重签已经完成,把目标文件(App文件)打包成ipa文件,就可以安装了


【注】codesign这种方法比较繁琐,易错,不推荐这么实现,但恰恰是重签的原理,后边的方法都是用的这种原理,只不过好多步骤都代办了。

二:使用xcode

前边的“3步”和codesign都是一样,不重复写了,直接第4步开干

  1. 新建一个空的工程,工程的名字和目标APP的名字相同,运行一次,保证新工程可以运行到你的手机上(新建的工程的描述文件写入的你的手机)

  2. 找到新建工程的包的地址


  3. 把修改好的目标APP.app 包直接覆盖新工程里边,再次运行就可以了


【注】1. xcode代办了使用描述文件生成权限文件,再通过权限文件重签目标App

  1. 这种方法比较方便推荐使用

三:使用shell脚本

  1. 在工程文件路径里边新建APP文件夹,把目标api 包放入到APP文件夹里边里边


  2. 将写好的shell 脚本文件,也放到工程目录里边

    可以在我的另一篇文章中了解shell脚本的知识(https://www.jianshu.com/p/8063f6c9ea0a

  3. 引用脚本文件(signApp.sh)


  4. 直接运行

【注】1. 这种方法也比较推荐,但是脚本文件必须写的“健壮”,不一定适合所有的app(比如有的app文件路径写的和普通的不一样,这样脚本的处理路径必须修改)

  1. 脚本文件里边的内容其实就是使用shell 语句去实现方法1中的步骤
  2. 运行的时候有可能会出现signApp.sh 文件没有执行权限,请添加执行权限
  3. 可以在我的另一篇文章中查看文件权限的内容(https://www.jianshu.com/p/456e2ee978c0
上一篇下一篇

猜你喜欢

热点阅读