IPA的注入+重签名

发表于:2017-11-15 13:18

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:搜狗测试    来源:51Testing软件测试网采编

  之前在进行iOS测试过程中由于要获取一定数据信息,因此需要对原本的安装包进行代码注入并且重新打包安装,因此就需要使用重签名策略,在此进行分享,希望大家可以使用其中的方法来运用到自身的测试项目中。
  工具:
  MachOview 查看 进制 Mach-O 文件
  yololib Mach-O 文件注入
  步骤:
  首先,对所需砸壳 ipa 利用Clutch 利用越狱设备砸壳
  下载后拷贝到越狱设备 /usr/bin/ 内
  通过 ssh 或者 mobileterminal 等进入命令行模式
  直接调用 Clutch命令
  Usage: Clutch-2.0.4[OPTIONS]
  -b --binary-dump <value> Only dump binary files from specified     bundleID
  -d --dump <value> Dump specified bundleID into .ipa file
  -i --print-installed Print installed applications
  --clean Clean /var/tmp/clutch directory
  --version Display version and exit
  -? --help Display this help and exit
  -n --no-color Print with colors disabled
  其次,我们将制作好的framework注入到输入法的二进制文件,方法如下:
  yololib XXXXXXXXXX XXXXX.framework/XXXXX
  注入这串代码后我们可以通过MachOView查看该二进制文件,如果在Load Commands中查看到存在刚刚注入的framework,则证明该注入成功,如下图所示:
  最后,我们就需要对二进制文件以及framework进行重签名,具体方法如下:
  重签名打包
  // 查看是否加密
  otool -l XXX | grep crypt
  // 查看可签名证书
  security find-identity -p codesigning -v
  // 导出 entitlements
  security cms -D -i AwesomeRepackaging.mobileprovision > profile.plist
  /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' profile.plist > entitlem
  ents.plist
  // 对注入的 framework和原?进制文件签名
  codesign --entitlements entitlements.plist -f -s #your identity#TYActions.f
  ramework/TYActions
  codesign --entitlements entitlements.plist -f -s #your identity# SogouInput
  // 打包
  xcrun -sdk iphoneos PackageApplication -v ~/Desktop/tySogou/SogouInput.app-
  o ~/Desktop/SogouInput.ipa
  // 安装
  ideviceinstaller -i ~/Desktop/SogouInput.ipa
  // 查看签名信息
  codesign -vv -d Example.app
  // 查看完整性
  codesign --verify Example.app
  注意:
  1. 通过 mobileprovision 文件导出对应的 entitlements.plist,并将二者拷贝到对应的目录下
  2. 目录下的每个文件需要用对应的证书单独签名,包含的 Framework 也用其证书签名
  3. 用主文件的证书对主文件及Frameworks目录下的所有文件进行重签名
  4. 我们需要确保在 Info.plist 中的 BundleID 是否跟我们的描述文件里面指定的一致。因为在重签的过程中, codesign会检查我们的Info.plist 文件里面的 Bundle ID,如果不匹配则会返回一个错误值。
  5. 除了需要对app中的info.plist更改Bundle ID, 还需要对重签名的插件中的info.plist 也更改符合的Bundle ID
  6. embedded.mobileprovision 还要从中导出entitlements.plist
  codesign 签名时 需要用 --entitlements entitlements.plist 附加参数进行签名
  7. 重新签名整个 app下的所有二进制文件
  总结:
  重签名整个过程非常的繁琐,不仅包含上述的步骤,还需要我们进行证书的申请,证书安装等过程,这些在这里都没有进行介绍,如果大家感兴趣可以去查找相关资料。注入+重签名往往可以让我们在获得更多的权限同时也不再完全依赖于越狱环境。这也使得该方法变得更加稳定和长久。
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • likecoding
    2020-11-07 20:23:45

    推荐一款可视化工具,既能注入动态库,又能重签名和添加时间锁,这里下载:http://www.pc6.com/mac/901520.html

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号