一些iOS 9设备似乎崩溃了我从Xcode中的基本崩溃报告中收到的错误消息
dyld:malformed mach-o:load命令大小(16464)> 16384
不幸的是,这是我获得的所有信息.我甚至无法在本地调试或重现.任何人都可以向我暗示正确的方向吗?
它发生在更新我的Cocoapods后,所以我猜他们中的一个(或他们的依赖)行为不端.
在对我的mach-O二进制文件进行一些调查之后,我看到它sizeofcmds真的是16464.如果我理解正确,似乎有一个16384的加载命令大小限制,任何人都可以确认这个吗?
这是否意味着我应该删除dylibs,一切都应该没问题?
我正在尝试为 macOS实现一个微型编译器。我在配备 M1 的 MacBook Pro 上运行macOS 11.5。该assembly编码工作正常,我对这个结果(移交给锵编译和运行的时候就好了)很高兴。
我的问题是我找不到自己生成有效可执行文件的方法。我到了一个点,radare2 正确反汇编了可执行文件的每个部分,但是每次我尝试运行我的可执行文件时,我都会从终端获得 SIGKILL (9)。
我阅读了整个文件,因为我找不到关于 Mach-O 格式的任何其他文档来源。SPOILER:它的效果不是很好,这就是为什么我希望某种 Mach-O 巫师能够阅读此内容。
我的问题详细说明: Mach-O 标头很好。我的问题是关于加载命令。
我尝试注入以下段/命令:
但是无论我尝试什么(我什至尝试从其他可执行文件复制它们的值,然后我“替换”了入口点的地址以匹配我的),我都找不到使我的可执行文件工作的方法。
有谁知道我需要注入可执行文件及其值的确切加载命令是什么?
PS:如果有一种不使用 dyld 的方法,我会更高兴(我打算坚持使用系统调用)
我认为这是一个奇怪的问题,但现在我准备手工制作一个最小的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)