问题标签 [mach-o]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2305 浏览

macos - Mac OS X:估计程序代码和静态数据大小的最佳方法是什么?

我希望能够估计我的 C++ 程序使用了多少代码和静态数据?

有没有办法通过查看可执行文件或目标文件来找出这个问题?或者也许我可以在运行时做些什么?

otool 有帮助吗?

0 投票
4 回答
60860 浏览

xcode - 如何使用 Xcode 创建动态库 (dylib)?

我在 Xcode 中构建了一些命令行实用程序(纯 C,没有 Cocoa)。我希望他们所有人都使用我定制的 libpng 版本,并且我想通过在所有可执行文件之间共享一个库的副本来节省空间(我不介意.dylib与它们一起重新分发)。

我需要做一些魔术来获取 libpng 导出符号吗?

“Link Binary With Libraries”是否静态构建阶段链接?

Apple 的文档提到在运行时加载库dlopen,但是我如何让 Xcode 创建可执行文件而不抱怨缺少符号?


我想我已经弄清楚了:

  • libpng 没有正确链接,因为我已经构建了 32/64 位可执行文件和 32 位库。库和可执行文件的构建设置必须匹配。

  • libpng 的 config.h 需要有大量的定义,例如#define FEATURE_XXX_SUPPORTED

  • “Link Binary With Libraries”构建阶段可以很好地处理动态库,并且DYLD_FALLBACK_LIBRARY_PATH环境变量对于.dylib从应用程序包加载 s 是必需的。

0 投票
1 回答
3449 浏览

macos - OSX 的 Mach-O 二进制编辑器?

py-macholib 在 osx 上无法正常工作(使用 darwin 端口)。我还没有找到任何其他选择。

有任何想法吗?

0 投票
2 回答
5757 浏览

macos - 如何将 LC_LOAD_DYLIB 命令插入 Mach-O 二进制文件 (OSX)

我正在寻找用一些代码修补一块废弃软件。

该软件是基于碳的,所以我不能使用 InputManager(至少,我认为我不能)。我的想法是添加对 mach-o 标头的 dylib 引用,并在调用初始化例程时启动一个新线程。

我已经使用 hexeditor 添加适当的加载命令 (LC_LOAD_DYLIB) 来处理 mach-o 标头。

otool 报告了我希望看到的内容,因此我相当有信心该文件的格式正确。

但是,启动二进制文件会给我以下错误

我能猜到这意味着我需要修改 LC_ SYMTAB 或 LC_ DYNSYMTAB 部分......

有人有想法么?

0 投票
2 回答
753 浏览

macos - 重构从 Mach-O 二进制文件中剥离的符号

使用 Mac OS X 10.5 我试图弄清楚如何使用 dtrace 来跟踪 Mach-O 二进制文件的执行。但是,似乎所有符号都已被删除,因此任何尝试使用基于内部类/方法名称的探针的尝试都失败了。

我能够使用 class-dump 转储类、方法名称和它们实现的地址,所以我假设您可以使用它来重建二进制文件中的符号。这是否可能,如果有的话,是否有人知道任何可能有助于它的工具或一些可以帮助我更好地理解它的阅读材料?

这是我第一次尝试在这个级别使用二进制文件,所以任何帮助都将不胜感激。

0 投票
1 回答
2263 浏览

macos - 如何将数据嵌入到 Mac OS X mach-o 二进制文件的 TEXT 部分?

我有一个 Mac OS X 命令行工具,它可以从将一些数据嵌入到二进制文件本身中受益。

我知道 mach-o 文件支持多个段,其中一些可用于存储任意数据。但我找不到一个命令行工具来做到这一点。

虽然我知道还有其他可能更简单的方法(例如,将数据文件转换为 C 源代码并通过 gcc 将其链接)来将数据放入我的二进制文件中,但这个问题引起了我的兴趣。有谁知道魔法?

0 投票
1 回答
1854 浏览

macos - OS X:__TEXT 段中的部分是否被其他程序修改?

是否会发生某些程序(甚至操作系统本身)出于某种原因更改可执行文件的 __TEXT 段的内容?

  • 注意:这里,我指的是“__TEXT”段,而不是“__text”段。

换句话说:我是否可以依靠可执行文件的 __TEXT 段中的字节来检测我的可执行文件是否已损坏(例如通过计算该段的校验和),或者是否有可能因为该段可能被修改而得到误报在用户的计算机上安装程序后?

谢谢!

0 投票
4 回答
5425 浏览

c++ - C++ 中 32 位和 64 位 Mach-O 二进制/可执行格式的解析器

我正在寻找一个可以解析 32 位和 64 位 Mach-O 二进制格式的 C++ 库。我不需要任何花哨的东西,只需反汇编并将文件拆分为各个部分,因此无需反编译、名称解构等。

我知道我可以打开任何现有的反汇编程序或使用 Apple 的格式规范制作我自己的二进制解析器,但我有点希望不必走那么远,特别是如果其他人为我完成了这项工作。

非常感谢!

0 投票
2 回答
1768 浏览

executable - 如何修改二进制(Mach-O)文件的字符串?

有没有办法(轻松)修改 Mach-O 二进制文件中的字符串?我想延长预先存在的字符串的长度。

0 投票
2 回答
3894 浏览

assembly - 在 Mac OS X 上编辑程序集

我目前正在 Windows 上的 IDA Pro 中反汇编 Mach-O 可执行文件(具体来说,该可执行文件在 Mac OS X 上运行)。我有一条要更改的指令,但 IDA Pro 似乎不允许您这样做。所以,我尝试在 OS X 上使用 otool 来转储程序集(它做得很好)。但是,在 otool 中编辑程序集后,我尝试使用as <file name of modified otool -tV output>. 这给我带来了一堆错误,例如Junk character 43 (+). 在 Mac OS X 上仅更改 Mach-O 二进制文件中的一条指令的最简单方法是什么?