加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

如何对iOS应用实行修改并重新签名

发布时间:2022-05-18 10:02:06 所属栏目:安全 来源:互联网
导读:在某些场景下,你可能需要在没越狱的iOS设备上运行修改过的iOS应用,特别是当手上已越狱的iPhone突然变砖,只能被迫升级到非越狱版本的iOS系统时,这种需求显得更加迫切。再如,你需要使用这项技术来动态分析测试应用程序,或者你可能需要使用GPS欺骗手段来
          在某些场景下,你可能需要在没越狱的iOS设备上运行修改过的iOS应用,特别是当手上已越狱的iPhone突然变砖,只能被迫升级到非越狱版本的iOS系统时,这种需求显得更加迫切。再如,你需要使用这项技术来动态分析测试应用程序,或者你可能需要使用GPS欺骗手段来绕过Pokemon的锁区限制,在非洲地区捕捉宠物小精灵,而又不想承担越狱带来的安全风险。无论是哪种情况,你都可以使用本文介绍的方法对某个经过修改的应用重新签名并在自己的设备上成功运行。需要注意的是,这种技术仅在应用程序不是经过FairPlay加密(即从应用商店上下载)时才能正常工作。
 
          由于Apple采用了较为复杂的配置及代码签名系统,在iOS系统上对程序进行重新签名会比想象中困难得多。只有使用正确的配置文件以及完全正确的代码签名头,iOS系统才会允许应用程序正常运行。这使得你需要熟知许多概念:如不同类型的证书、BundleID、应用ID、团队ID,以及如何使用Apple的编译工具将这些东西结合在一起。简而言之,要想让不经过默认方法(即XCode环境)编译生成的程序在iOS上正确运行将会是一个困难重重的过程。
 
          我们在本文中使用的工具集包括optool、Apple的编译环境以及一些shell命令。我们所使用的方法灵感来自于Vincent Tan的Swizzler项目。此外,NCC工作组采用其他工具集也完成了同样的工作。
 
1)使用iOS开发者账号时
 
如果你之前使用Xcode开发和部署过iOS应用,你已经获得了一个代码签名证书。你可以使用security工具列出你现有的签名身份码:
 
复制
$ security find-identity -p codesigning -v
1) 61FA3547E0AF42A11E233F6A2B255E6B6AF262CE "iPhone Distribution: Vantage Point Security Pte. Ltd."
2) 8004380F331DCA22CC1B47FB1A805890AE41C938 "iPhone Developer: Bernhard Müller (RV852WND79)"
 
在下文的shell命令中,我使用了自己的签名身份,该签名身份与我公司的开发团队相关联。我创建了名为“sg.vp.repackaged”的app-id,以及一个名为“AwesomeRepackaging”的配置文件,生成了一个名为“AwesomeRepackaging.mobileprovision”的文件,请你在实际操作时将这些字段替换为你自己的文件名。
 
2)使用普通iTunes账号时
 
幸运的是,即便你不是付费开发者,Apple也会给你发放一个免费的开发配置文件。你可以使用自己的Apple账户,通过Xcode环境获得该配置文件——只需要创建一个空的iOS工程,并从应用容器中提取embedded.mobileprovision即可。NCC博客对整个过程进行了详细描述。
 
获取到配置文件后,你可以使用security工具检查其内容。除了证书及设备信息外,你还可以从配置文件中找到应用所被赋予的运行权限。这些信息在后续的代码签名工作中都需要用到,因此你需要将它们提取到单独的plist文件中。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!