dylib 文件是如何布局的

逆向工程 拆卸 二进制
2021-06-30 22:19:32

我的最终目标是在 dylib 文件中找到 Mach-O 头文件。

到目前为止,这是我想出的:

我所有的 dylib 文件都有以下前四个字节:0xcafebabe。然后在 4096 字节之后,实际的 Mach-O 头开始,然后是通常的命令等等。

但是 0xcafebabe 也用于识别 Java 类文件。那么如何根据实际内容来区分这两者呢?dylib 文件中 0xcafebabe 后面的字段是什么?

1个回答

由于 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