gpt4 book ai didi

macos - OS X : Do sections in the __TEXT segment get modified by other programs?

转载 作者:行者123 更新时间:2023-12-02 09:00:21 24 4
gpt4 key购买 nike

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

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

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

谢谢!

最佳答案

段本质上是一种虚拟内存构造:它们通常在页面边界上对齐,因此它们最终可能包含比您的应用程序代码多一点的内容。鉴于 __TEXT 段通常从 Mach-O 文件的开头开始,这通常也包括 Mach-O header 。

在 OS X 10.3 及更早版本中,预绑定(bind)可能会影响 __TEXT 段(详细描述 here )。在以后的版本中,代码签名也可以修改__TEXT段。

您可能想使用 OS X 的内置代码签名机制进行调查(问题的原因和解决方案?)。一些推荐的引用资料:

您可能会发现 macholib在探索中很有用。 (它包含在最近的 OS X 版本中以支持 py2app。)这是我用来提取 __TEXT 段的简单脚本。

from macholib.MachO import MachO

m = MachO('foo')
__TEXT = (cmd for load_cmd, cmd, data in m.headers[0].commands
if getattr(cmd, 'segname', '').rstrip('\0') == '__TEXT').next()
print '__TEXT segment: offset %x size %x' % (__TEXT.fileoff, __TEXT.filesize)
f = open('foo', 'rb')
f.seek(__TEXT.fileoff)

open('foo__TEXT', 'wb').write(f.read(__TEXT.filesize))

当然,你也可以使用otool -lv,但输出有点乱,难以解析。

关于macos - OS X : Do sections in the __TEXT segment get modified by other programs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1688831/

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