相关疑难解决方法(0)

命令太多了?Dyld消息:格式错误的mach-o:加载命令大小

一些iOS 9设备似乎崩溃了我从Xcode中的基本崩溃报告中收到的错误消息

dyld:malformed mach-o:load命令大小(16464)> 16384

不幸的是,这是我获得的所有信息.我甚至无法在本地调试或重现.任何人都可以向我暗示正确的方向吗?

它发生在更新我的Cocoapods后,所以我猜他们中的一个(或他们的依赖)行为不端.

在对我的mach-O二进制文件进行一些调查之后,我看到它sizeofcmds真的是16464.如果我理解正确,似乎有一个16384的加载命令大小限制,任何人都可以确认这个吗?

这是否意味着我应该删除dylibs,一切都应该没问题?

dyld ios ios9

11
推荐指数
2
解决办法
1247
查看次数

手工制作的 macOS 可执行文件

我正在尝试为 macOS实现一个微型编译器。我在配备 M1 的 MacBook Pro 上运行macOS 11.5。该assembly编码工作正常,我对这个结果(移交给锵编译和运行的时候就好了)很高兴。

我的问题是我找不到自己生成有效可执行文件的方法。我到了一个点,radare2 正确反汇编了可执行文件的每个部分,但是每次我尝试运行我的可执行文件时,我都会从终端获得 SIGKILL (9)。

我阅读了整个文件,因为我找不到关于 Mach-O 格式的任何其他文档来源。SPOILER:它的效果不是很好,这就是为什么我希望某种 Mach-O 巫师能够阅读此内容。

我的问题详细说明: Mach-O 标头很好。我的问题是关于加载命令

我尝试注入以下段/命令:

  • __PAGEZERO
  • __文本
  • __文本,__文本
  • __链接编辑
  • LC_DYLD_INFO
  • LC_LOAD_DYLINKER
  • LC_MAIN
  • LC_LOAD_DYLIB

但是无论我尝试什么(我什至尝试从其他可执行文件复制它们的值,然后我“替换”了入口点的地址以匹配我的),我都找不到使我的可执行文件工作的方法。

有谁知道我需要注入可执行文件及其值的确切加载命令是什么?

PS:如果有一种不使用 dyld 的方法,我会更高兴(我打算坚持使用系统调用)

macos assembly mach-o arm64

4
推荐指数
1
解决办法
98
查看次数

最小Mach-o 64二进制

我认为这是一个奇怪的问题,但现在我准备手工制作一个最小的Mach-O 64二进制文件,就像ELF(http://timelessname.com/elfbin/)上的相同问题一样.

但目前我仍然在如何调试我的二进制文件.otool没有告诉我错误,但我得知如何调试二进制文件.以下是我在十六进制视图中创建的二进制文件.在目前阶段,我不知道如何继续.有什么建议吗?或者我应该阻止这些愚蠢的事情......

0000000: cffa edfe 0700 0001 0300 0080 0200 0000  ................
0000010: 0900 0000 0002 0000 8500 0000 0000 0000  ................
0000020: 1900 0000 4800 0000 5f5f 5041 4745 5a45  ....H...__PAGEZE
0000030: 524f 0000 0000 0000 0000 0000 0000 0000  RO..............
0000040: 0000 0000 0100 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 1900 0000 9800 0000  ................
0000070: 5f5f 5445 5854 0000 …
Run Code Online (Sandbox Code Playgroud)

macos mach-o

2
推荐指数
1
解决办法
794
查看次数

标签 统计

mach-o ×2

macos ×2

arm64 ×1

assembly ×1

dyld ×1

ios ×1

ios9 ×1