首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建加密的Mach-o文件

构建加密的Mach-o文件
EN

Stack Overflow用户
提问于 2021-11-15 09:19:30
回答 1查看 107关注 0票数 0

我想知道是否有可能构建一个Mach-O文件,或者修改现有的文件,然后对其重新签名,以便对代码部分进行加密。

我知道有一个名为cryptid的标志来表示加密类型(分别通过load命令LC_ encryption _INFO_32/64的值`EncryptionInfo32/64 )

但是,我在Xcode中找不到它是如何实现的。

编辑:我很清楚它可以在iOS中完成,但我的问题与macOS有关,该平台在Mach-O文件中支持此加密功能吗?

EDIT2:所以在读完另一个问题后,我了解到整个加密工作只能由appStore完成,这是在开发人员已经离开Mach-O文件之后。因此,在这种情况下,苹果实际上控制了加密/解密algo+key,它完全不在开发人员的手中,对吧?此外,由于Mach-O在加密过程中被更改,那么谁负责对应用程序进行重新签名?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-17 22:44:10

不,您不能这样做。

将LC_ENCRYPTION_INFO添加到您的二进制文件中的唯一“受支持”的方法是通过iOS应用商店分发。苹果会检查你的二进制文件是否符合他们的规则,然后对二进制文件进行加密并重新签名。

这一切都得到了"FairPlay“的支持,这是苹果公司专有的数字版权管理堆栈。人们对它知之甚少,因为它的代码非常模糊,但人们普遍认为它是建立在苹果定制硬件AES引擎的功能上的。鉴于此,您自己创建一个加密器可能是可能的,也可能是不可能的,但这将需要巨大的逆向工程努力才能找到答案。

此外,整个FairPlay堆栈只存在于苹果自己的芯片上。它确实可以在SIP上使用,因为你可以安装现成的iOS应用程序(只要你启用了M1 ),但在Intel上根本不能使用它(相关的kext是IOTextEncryptionFamily.kextFairPlayIOKit.kext,后者是模糊的)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69971972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档