我的最终目标是在 dylib 文件中找到 Mach-O 头文件。
到目前为止,这是我想出的:
我所有的 dylib 文件都有以下前四个字节:0xcafebabe。然后在 4096 字节之后,实际的 Mach-O 头开始,然后是通常的命令等等。
但是 0xcafebabe 也用于识别 Java 类文件。那么如何根据实际内容来区分这两者呢?dylib 文件中 0xcafebabe 后面的字段是什么?
我的最终目标是在 dylib 文件中找到 Mach-O 头文件。
到目前为止,这是我想出的:
我所有的 dylib 文件都有以下前四个字节:0xcafebabe。然后在 4096 字节之后,实际的 Mach-O 头开始,然后是通常的命令等等。
但是 0xcafebabe 也用于识别 Java 类文件。那么如何根据实际内容来区分这两者呢?dylib 文件中 0xcafebabe 后面的字段是什么?
由于 dylib 文件只是一个 Mach-O 文件,您将需要了解标头格式,它在代码本身中布局得很好。你可以看看苹果网站上的 Mach-O 解析函数
http://www.opensource.apple.com/source/xar/xar-45/xar/lib/macho.c
你看到的是 Mach-O 文件的 FAT Header 部分,它告诉你在哪里可以找到 Mach-O 文件的其余部分。这用于有一个文件,其中包含两个独立的体系结构。FAT 标头描述在哪里可以找到运行它的系统所需的其余数据。
在做一些逆向和取证工作时,我创建了一个 010Editor 模板,用于解析 Mach-O 文件——它可能与 Apple 的源代码结合使用,以了解 0xCAFEBABE 之后的内容并加载您实际的 dylib 文件;
https://github.com/strazzere/010Editor-stuff/blob/master/Templates/MachOTemplate.bt