在运行时确定程序段(HEADER、TEXT、CONST 等)
所以我意识到我可以在 IDA Pro 中打开一个二进制文件并确定段的开始/停止位置。是否可以在 Cocoa 运行时确定这一点?
我假设有一些 C 级库函数可以实现这一点,我在 mach 头中查找但找不到太多:/
提前感谢!
So i realize I can open a binary up in IDA Pro and determine where the segments start/stop. Is it possible to determine this at run-time in Cocoa?
I'm assuming there are some c-level library functions that enable this, I poked around in the mach headers but couldn't find much :/
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Cocoa 不包含用于处理 Mach-O 文件的类。需要使用系统提供的Mach-O函数。您读对了 Mach-O 标头。
我编写了一个小程序,它接受 Mach-O 文件名作为输入并转储有关其段的信息。请注意,该程序仅处理 x86_64 架构的瘦文件(即,不是胖/通用)。
请注意,我也不会检查每个操作以及文件是否是格式正确的 Mach-O 文件。进行适当的检查将作为读者的练习。
您只需为 x86_64 位编译此程序,然后针对 x86_64 Mach-O 二进制文件运行它。例如,假设您已将此程序保存为 test.c:
如果您需要有关如何读取 Mach-O 文件的更多示例,Apple 开源网站上的 cctools 可能是您最好的选择。您还需要阅读 Mac OS X ABI Mach-O 文件格式参考。
Cocoa doesn’t include classes for handling Mach-O files. You need to use the Mach-O functions provided by the system. You were right in read the Mach-O headers.
I’ve coded a small program that accepts as input a Mach-O file name and dumps information about its segments. Note that this program deals with thin files (i.e., not fat/universal) for the x86_64 architecture only.
Note that I’m also not checking every operation and whether the file is a correctly formed Mach-O file. Doing the appropriate checks are left as an exercise to the reader.
You need to compile this program for x86_64 bit only and run it against a x86_64 Mach-O binary. For instance, assuming you’ve saved this program as test.c:
If you want more examples on how to read Mach-O files, cctools on Apple’s Open Source Web site is probably your best bet. You’ll also want to read the Mac OS X ABI Mach-O File Format Reference as well.