ios – 使用开发证书重新调用appstore导出的IPA
题
是否可以使用开发证书和配置文件重新签名/提供为AppStore导出的IPA? 我可以做实际的辞职,并且在手动验证时看起来很好,但是我尝试使用的任何应用程序都会在启动时崩溃.我不是要试图从AppStore下载一个应用程序,这些是我的计算机上构建的应用程序. 没有一种流行的工具似乎也做得对.有没有人把它拉下来或者由于某种原因它是不可能的? 发现 在设备日志中,我没有看到应用程序进程本身报告的任何内容,因此操作系统必须在启动之前将其杀死.我确实看到了这个: securityd[101] <Notice>: cert[0]: CheckLeafMarkerOid =(leaf)[]> 0 securityd[101] <Notice>: cert[0]: SubjectCommonName =(leaf)[]> 0 securityd[101] <Notice>: cert[0]: IssuerCommonName =(path)[]> 0 amfid(Security)[196] <Notice>: [leaf CheckLeafMarkerOid IssuerCommonName SubjectCommonName] amfid(libmis.dylib)[196] <Info>: Blacklist does not exist. amfid(libmis.dylib)[196] <Info>: Using empty blacklist. amfid(libmis.dylib)[196] <Info>: CreateMISAuthListWithStream: open stream failed (may be non-existing) amfid(libmis.dylib)[196] <Info>: CreateMISAuthListWithStream: creating empty auth list assertiond[66] <Notice>: Unable to obtain a task name port right for pid 1683: (os/kern) failure (5) SpringBoard(FrontBoard)[57] <Error>: Unable to register for exec notifications: No such process SpringBoard(BaseBoard)[57] <Error>: Unable to get short BSD proc info for 1683: No such process SpringBoard(BaseBoard)[57] <Error>: Unable to get proc info for 1683: No such process SpringBoard(BaseBoard)[57] <Error>: Unable to obtain a task name port right for pid 1683: (os/kern) failure (0x5) SpringBoard(BaseBoard)[57] <Error>: Unable to get short BSD proc info for 1683: No such process SpringBoard(FrontBoard)[57] <Error>: Unable to obtain a process handle for <FBApplicationProcess: 0x10bc26cd0; com.company.product.name; pid: 1683> 这似乎表明权利问题.但是,当我手动打印它们时(/usr/libexec / PlistBuddy -x -c“print:Entitlements”/ dev / stdin<<< $(security cms -D -i“$1”/embedded.mobileprovision)> ; entitlements.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>TEAMID.*</string> <key>com.apple.developer.default-data-protection</key> <string>NSFileProtectionComplete</string> <key>com.apple.developer.team-identifier</key> <string>TEAMID</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>TEAMID.*</string> </array> </dict> </plist> 这清楚地表明get-task-allow权利是真的. 工具 无论我尝试哪种工具,我都会得到相同的结果,例如 > https://dantheman827.github.io/ios-app-signer/ 类似的问题 > can we resign the appstore build with our development certificates?简单没有答案,似乎不正确,因为我能够在没有警告或错误的情况下执行实际的辞职操作. 更新1 (对@Yoshkebab的反应) 输出otool表示二进制文件未加密: cmd LC_ENCRYPTION_INFO cmdsize 20 cryptoff 0 cryptsize 0 cryptid 0 -- cmd LC_ENCRYPTION_INFO_64 cmdsize 24 cryptoff 0 cryptsize 0 cryptid 0 但是例如Hopper无法拆解它…有没有引用Apple在Xcode中应用加密?这表明他们在用户的系统上有一把钥匙?此外,我没有看到表明这一点的构建步骤(codesign只是添加签名,不?) Clutch无法看到我的应用程序,并且Stefan Esser的dumpdecrypted库不起作用,因为应用程序立即崩溃我怀疑(我的设置正常,因为它适用于其他应用程序). 解决方法
AppStore签名的应用程序不仅由开发人员的证书签名,而且二进制文件也由Apple的私钥加密.
因此,您可以重新签名应用程序,但除非您解密二进制文件,否则您将无法运行它们. 查看二进制文件的LC_ENCRYPTION_INFO加载命令(最简单的方法是使用 MachoView),如果看到标志Crypt ID!= 0,则二进制文件被加密. 假设它是,你仍然可以这样做,这有点乏味,你需要一个安装了App的监狱设备. >使用SSH连接到您的设备.使用gandalf最简单的方法 现在你有一个解密的IPA,你可以辞职 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |