跳转到主要内容

Mach-O头分析编辑

项目描述

macholib可用于分析和编辑Mach-O头,这是Mac OS X使用的可执行文件格式。

它通常用作依赖性分析工具,并将Mach-O头中的dylib引用重写为@executable_path相对路径。

尽管该工具针对特定平台文件格式,但它是一个平台和字节序无关的纯Python代码。

CI状态

  • https://github.com/ronaldoussoren/macholib/workflows/Lint/badge.svg
  • https://github.com/ronaldoussoren/macholib/workflows/Test/badge.svg

macholib 1.16.2

  • 为Python 3.11更新分类器

macholib 1.16.1

  • 添加了一些新的CPU子类型定义

macholib 1.16

  • 向MachO和`macholib.MachOHeader`添加了`allow_unknown_load_commands`选项。

    由github用户bhamiltoncx提交的PR。

macholib 1.15.2

  • 在项目元数据中明确提及Python 3.10

macholib 1.15.1

  • 删除了上一个版本中引入的调试打印。

macholib 1.15

  • 添加了对macOS 11 SDK中新特性的支持

  • 修复README.rst中到仓库的链接

  • 修复macOS 11或更高版本上系统库的 macholib.dyld.dyld_find

macholib 1.14

  • 仓库已迁移至GitHub

  • #32: 更新LC_NAMES表

macholib 1.13

# 31: 添加macOS 10.15中引入的两个新加载命令

macholib 1.12

  • #27: build_version_command缺少describe方法

macholib 1.11

  • 添加了对@loader_path的非常有限的黑客式支持。这仅足以处理Python二进制轮中的扩展和dylib。

macholib 1.10

  • #25: 添加对LC_NOTE和LC_BUILD_VERSION的支持

macholib 1.9

特性

  • 为在代码中使用但从未定义的 macholib.mach_o.reloc_type_generic 添加了定义。

  • #22: 添加LICENSE文件

  • #23: 为“python -m macholib”添加“–help”选项

  • 添加了函数 macholib.MachO.lc_str_value,该函数有助于解码 macholib.mach_o.lc_str 的值。这些值是加载命令数据的偏移量,该函数将返回作为字节数组的实际值。

    参见问题 #21。

错误修复

  • 拉取请求 #15:修复thread_command类中的拼写错误

    用户“phdphuc”在bitbucket上提供的补丁。

macholib 1.8

  • 使用与otool相同的依赖项遍历逻辑

    Taras Tsugrii <ttsugrii@fb.com> 提供的补丁。

  • 添加了对新加载命令的支持

    David Dorsey <trogdorsey@gmail.com> 提供的补丁,Ronald Oussoren进行了增强。

  • 修复从XCODE 6.x处理DSYM文件的问题

    HolmsBlazhey <andrey.blazhey@gmail.com> 提供的补丁。

  • MachOGraph.locate():在调用dyld_find()时,使用kwarg 'loader_path',而不是'loader'。

    Stuart Berg <bergs@janelia.hhmi.org> 提供的补丁。

  • 向thread_command添加字段

    Asger Hautop Drewsen <asgerdrewsen@gmail.com> 提供的补丁。

  • 添加缺失的ARM_V7S子类型。

    “NN”提供的补丁。

  • 修复SymbolTable问题

    Christian Klein <chris@5711.org> 提供的补丁。

  • 使用第一个Mach-O头作为默认头

    Christian Klein <chris@5711.org> 提供的补丁。

  • 问题 #17:将LC_LOAD_UPWARD_DYLIB添加到_RELOCATABLE集合

  • 问题 #16:macholib在无效输入上“挂起”

    由于在不受信任的输入上使用range函数,当读取无效输入并尝试构建一个巨大的列表时,python进程可能会挂起。

  • 问题 #18:在macho_version_helper中解析版本错误

    mach_version_helper 中的子字段顺序与现实相反。

  • 问题 #19:修复防止代码签名的对齐问题

    Brendan Simon提供的补丁。

  • 修复问题 #14:无法将endian参数传递给p_uint64.from_str

macholib 1.7

  • 添加了对ARM64、LC_ENCRYPTION_INFO_64和LC_LINKER_OPTION的支持

    Matthias Ringwald提供的补丁。

  • 加载命令现在有一个“describe”方法,该方法返回有关命令的更多信息。

    David Dorsey提供的补丁。

  • 头中的MAGIC值始终以本地字节序表示,而不是作为从二进制中读取的值。

    David Dorsey提供的补丁。

  • 向“macholib.mach_o”添加了各种新常量。

    David Dorsey提供的补丁。

macholib 1.6.1

  • ?

macholib 1.6

  • 在macholib.dyld中添加了对@loader_path’链接命令的支持

    • 添加了函数 macholib.dyld.dyld_loader_search

    • 此函数由 macholib.dyld.dyld_find 使用,该函数现在有一个新的(可选)参数,用于指定加载器的路径。

  • 还添加了对@loader_path’的支持,在macholib.MachoGraph中使用dyld模块中新增的@loader_path’支持。

    由于这项支持,macho_standalone 工具现在可以重写包含 '@loader_path’ 加载命令的二进制文件。

macholib 1.5.2

  • 问题 #93:在 Mach-O 标头过大无法重定位的异常消息中显示受影响的文件名。

macholib 1.5.1

  • 由于 setup.py 中的错误,包元数据中没有 'classifiers'。

macholib 1.5

macholib 1.5 是一个小版本的功能发布

  • 不再使用 2to3 来提供 Python 3 支持

    因此,macholib 现在不再支持 Python 2.5 及更早版本。

  • 增加了对一些新的 Mach-O 加载命令的支持

  • macho_standalone.py 中的 py3k 问题的修复

    由 Lu Guanqun 补丁。

  • macho_dump.py 中一些问题的修复

    由 Nam Nguyen 补丁。

  • 问题 #10:修复了 LC_DATA_IN_CODE 链接器命令,没有此修复,py2app 无法构建 Xcode 4.5 编译的源二进制文件的应用程序包。

  • 问题 #6:修复了 LC_ENCRYPTION_INFO 链接器命令

  • 使用 Mach 头信息来打印二进制的 CPU 类型,而不是尝试从指针宽度和字节序推断。

    由于问题 #6,代码已更改,其中用户尝试转储 iOS 二进制文件,导致先前版本中出现无效输出。

  • 映射 macholib.macho_dump.ARCH_MAP 没有文档记录,并且 macholib 本身不再使用。它将在下一个版本中删除。

  • 命令行工具 macho_findmacho_dumpmacho_standalone 已弃用。请使用“python -mmacholib”代替。即

    $ python -mmacholib dump /usr/bin/grep
    
    $ python -mmacholib find ~
    
    $ python -mmacholib standalone myapp.app

    这使它更清楚地表明正在使用哪个版本的工具。

macholib 1.4.3

macholib 1.4.3 是一个小版本的功能发布

  • 为 macholib.mach_o.CPU_TYPE_NAMES 添加了 ‘x86_64’ 和 ‘ppc64’ 字符串。

  • 在 1.4.2 版本中,macho_find 和 macho_dump 出现了问题

  • 添加了 ‘macholib.util.NOT_SYSTEM_FILES’,一个列表,其中包含位于系统位置但不是系统路径的文件。

    需要解决 PySide (参见 py2app 追踪器中的问题 #32) 中的错误

macholib 1.4.2

macholib 1.4.2 是一个小版本的错误修复发布

  • 在 1.4.1 中添加的新加载命令支持中包含了一个错误,该错误在 OS X 10.7 (Lion) 上引起问题。

macholib 1.4.1

macholib 1.4.1 是一个小版本的功能发布

特性

  • 添加了对在 OS X 10.6 生命周期中添加的多个新 MachO 加载命令的支持:LC_LOAD_UPWARD_DYLIBLC_VERSION_MIN_MACOSXLC_VERSION_MIN_IPHONEOSLC_FUNCTION_STARTS

macholib 1.4

macholib 1.4 是一个功能发布

特性

  • 现在使用 sphinx 生成文档,可以在 <http://packages.python.org/macholib> 查看文档。

  • 存储库已移动到 bitbucket

  • 现在有一个测试套件

  • 模块内的私有功能已重命名为以下划线开头的名称。

  • macholib.ptypes 中的基本可打包类型被重命名为更好地表示相应的 C 类型。下表列出了旧名称和新名称(旧名称仍然可用,但已弃用,将在未来的版本中删除)。

    旧名称

    新名称

    p_byte

    p_int8

    p_ubyte

    p_uint8

    p_short

    p_int16

    p_ushort

    p_uint16

    p_int

    p_int32

    p_uint

    p_uint32

    p_long

    p_int32

    p_ulong

    p_uint32

    p_longlong

    p_int64

    p_ulonglong

    p_uint64

    Macholib.ptypes.p_ptr 现在不再存在,因为它有一个不明确的定义,实际上在代码库中也没有使用。

错误修复

  • dyld.dyld_default_search的语义有了一点变化,现在它首先搜索框架路径(如果适用),然后是链接器路径,而不管DYLD_FALLBACK*环境变量的值。

    以前版本会在设置这些变量时改变搜索顺序,这很奇怪,并且与系统dyld的文档行为不符。

  • 现在又可以使用python2.5进行安装了

  • 源分发包含所有文件,由于切换到mercurial(这混淆了setuptools)而出现了问题

macholib 1.3

macholib 1.3是一个功能发布。

特性

  • 实验性的Python 3.x支持

    这个版本包含了对Python 3的轻度测试支持。

macholib 1.2.2

macholib 1.2.2是一个错误修复发布。

错误修复

  • Macholib应该与64位代码更好地工作(由Marc-Antoine Parent提供的补丁)

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

macholib-1.16.3.tar.gz (59.3 kB 查看哈希值)

上传时间:

构建分发

macholib-1.16.3-py2.py3-none-any.whl (38.1 kB 查看哈希值)

上传时间: Python 2 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面