簡體   English   中英

構建加密的 Mach-o 文件

[英]Build Mach-o file as encrypted

我想知道是否可以構建一個 Mach-O 文件,或者修改一個現有的文件,然后重新簽名,以便對代碼部分進行加密。

我知道有一個名為cryptid的標志表示加密類型(分別為加載命令 LC_ENCRYPTION_INFO_32/64 的值“EncryptionInfo32/64”)

但是,我無法在 Xcode 中的任何地方找到它是如何完成的。

編輯:我很清楚它可以在 iOS 中完成,但我的問題與 macOS 有關,該平台是否支持 Mach-O 文件中的此加密功能?

EDIT2:所以在閱讀了另一個問題后,我明白整個加密的事情只能由 appStore 來完成,這是在 Mach-O 文件已經離開開發人員方面之后。 所以在這種情況下,蘋果實際上控制了加密/解密算法+密鑰,完全不在開發者手中,對吧? 此外,由於 Mach-O 在加密期間正在更改,那么誰負責重新簽署應用程序?

謝謝

不,你不能這樣做。

將 LC_ENCRYPTION_INFO 添加到二進制文件的唯一“受支持”方式是通過 iOS App Store 分發。 Apple 會檢查您的二進制文件是否符合他們的規則,然后對二進制文件進行加密並重新簽名。

這一切都由 Apple 專有的 DRM 堆棧“FairPlay”提供支持。 由於代碼被嚴重混淆,因此對它知之甚少,但人們普遍認為它是建立在 Apple 定制硬件 AES 引擎的功能之上的。 鑒於此,您自己創建加密器可能會也可能不會,但需要大量的逆向工程努力才能找到答案。

此外,整個 FairPlay 堆棧僅存在於 Apple 自己的芯片上。 它確實在 M1 Mac 上可用,因為您可以安裝現成的 iOS 應用程序(只要您啟用 SIP),但它在 Intel Mac 上根本不可用(相關的 kext 是IOTextEncryptionFamily.kextFairPlayIOKit.kext ,后者被混淆)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM