gpt4 book ai didi

macos - 逆向工程 iWork '13 格式

转载 作者:行者123 更新时间:2023-12-03 16:02:12 30 4
gpt4 key购买 nike

Apple iWork 套件的早期版本使用非常简单的文档格式:

  • 文档是资源包(文件夹,无论是否压缩)
  • 该 bundle 包含一个 index.apxl[z] 文件,以专有但相当容易理解的模式描述文档结构

iWork '13 完全重做了格式。文档仍然是 bundle ,但索引 XML 文件中的内容现在编码在一组二进制文件中,类型后缀为 .iwa,并打包到 Index.zip 中。

例如,在 Keynote 中,有以下 iwa 文件:

AnnotationAuthorStorage.iwa
CalculationEngine.iwa
Document.iwa
DocumentStylesheet.iwa
MasterSlide-{n}.iwa
Metadata.iwa
Slide{m}.iwa
ThemeStylesheet.iwa
ViewState.iwa
Tables/DataList.iwa

对于 MasterSlides 1...nSlides 1...m

从它们的命名中可以清楚地看出它们的用途。这些文件甚至看起来未压缩,基本上所有内容文本都直接可见为二进制 blob 中的字符串(尽管在可读 ASCII 字符中存在一些类似 RTF/NSAttributedString/类似相关的垃圾)。

我在这里发布了一个简单示例主题文档的解压Index:https://github.com/jrk/iwork-13-format .

但是,整体文件格式对我来说并不明显。 Apple 长期以来一直使用简单的平台标准格式(例如 plists)来对其大部分文档进行编码,但文件开头没有明确的类型标记,而且对我来说这些 iwa< 的含义并不明显 文件是。

这些文件有任何提示吗?是否有证据表明它们采用某种合理可理解的序列化格式?

通过 F-Script 翻查 Keynote 应用程序运行时和类转储,我发现的唯一证据是在似乎用于 iWork 的序列化类中使用了 Protocol Buffer ,例如:https://github.com/nst/iOS-Runtime-Headers/blob/master/PrivateFrameworks/iWorkImport.framework/TSPArchiverBase.h .

通过 protoc --decode_raw 快速传输一些文件,并删除前 0…16 个字节,没有产生任何明显可用的内容。

最佳答案

我已经完成了一些对格式进行逆向工程的工作并发布了我的结果 here 。我写了一个description格式并提供了示例项目。

基本上,.iwa 文件是使用 Snappy 压缩的 Protobuf 流。

希望这有帮助!

关于macos - 逆向工程 iWork '13 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19571787/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com