问题标签 [otool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2017 浏览

macos - 用otool反编译.framework包?

我正在尝试使用命令行和 otool 在 mac 上反编译 .framework 包。它不允许我 - 无效文件错误或类似的东西。我看到 otool 确实可以与 .a 静态库一起使用。

有什么办法可以反编译 .framework 包?

0 投票
0 回答
298 浏览

jailbreak - otool -L 越狱 iPhone 上的问题

我连接了我的越狱 iPhone,它 ssh 并执行

这是输出

然后我执行

目录包括:

他们没有CoreFoundation

我执行

也没有一个名为CoreFoundation的文件,
我认为CoreFoundation应该是一个 dylib。但为什么我找不到它。如果它不是 dylib 它到底是什么?
当然,我的 AppStore 运行良好

0 投票
0 回答
1145 浏览

macos - install_name_tool -change 静默失败并忽略 -headerpad_max_install_names 标志

我有一个命令行可执行文件,其中包含指向 dylib 的链接——分发时——不会位于otool -L.

例如,给定一个名为 的二进制文件foo

在我的安装程序中,我有一个安装后脚本试图用来install_name_tool -change解决这个问题,以便foo链接到新位置的 dylib。

例如:

但是这种变化被忽略了,默默地失败了。当我otool -L再次运行时:

没有改变。

我正在编译胖二进制文件并尝试将-headerpad_max_install_names编译标志添加到 32 位 Makefile。这并没有解决问题,因为它install_name_tool -change仍然默默地失败。

我读到它-headerpad_max_install_names在 64 位平台上没有任何作用,但我还是将它添加到 64 位 Makefile 中。可以预见的是,这也没有解决问题。

如何修复我的编译过程,以便最终可以更改链接 dylib 的路径install_name_tool

0 投票
1 回答
1157 浏览

c - 读取二进制 (MACH-O) 文件加载命令

otool 和类似工具如何读取加载命令?我找不到任何开源工具来解决这个问题(即使 otool 是部分开源的)。它如何解析二进制文件?它从哪里开始?

谢谢

0 投票
1 回答
350 浏览

xcode - Easily build a Mac OS X .app bundled with MacPorts

There is a bash script to build a Mac OS X .app bundle from an application written in Go that works by extracting the necessary libraries, resources, etc. from a Homebrew installation and tweaking the libraries. I'm happy adding MacPorts support, but..

Aren't there easier ways to do this, like using Xcode projects or whatever? Is there an analog of py2app for go? What should I know about using outside libraries in .app bundles?

0 投票
0 回答
390 浏览

ios - 使用 otool 获取常量 NSString

我试图从 .ipa 文件中恢复 iOS 应用程序,需要在其中找到所有常量字符串......我正在使用 otool 并且不知道该怎么做。我可以通过命令获取所有选择器名称

但无法弄清楚如何获得常量字符串。谁能告诉我该怎么做?

0 投票
1 回答
477 浏览

objective-c - Mac OS X - 将可执行文件链接到不同的动态库,同时加载旧的和新的

我有一个用 Xcode 构建的命令行工具,它链接到一些 Apple 框架。

作为“个人实验”(只是想了解一点动态库的工作原理),我试图将可执行文件指向相同框架的不同版本。

例如,假设可执行EXEC使用LIB_A,后者使用LIB_B

我制作了LIB_ALIB_B的副本,将它们放在不同的(较短的)目录路径下。

我曾经otool -L获取依赖项和库的 ID。

然后我使用install_name_toolwith 指令-id更改新LIB_ALIB_B的 ID (基本上只是更改前导路径,因为名称没有更改)。

然后使用指令-change让新的LIB_A指向新的LIB_B并让可执行的EXEC指向新的LIB_A

这样,我认为应该正确地重新创建整个依赖关系树。


install_name_tool没有返回错误并检查可执行文件和新库,otool它们都指向正确的路径。

不幸的是,运行可执行EXEC时,控制台会抛出许多关于类重复定义的错误。就像旧库和新库都被加载一样。

最后一切都因Trace/BPT 陷阱而崩溃:5

例如:

如果我调用

我在执行时看到实际上库被加载了两次。

0 投票
0 回答
322 浏览

objective-c - 如何在 Objective-C 反汇编中注释选择器?

从一个从 Objective-C 编译的未加密二进制文件中,我可以使用命令查看函数和方法的程序集,用被调用的 C 函数的名称进行注释otool -tV。但是,Objective-C 方法调用始终显示为对objc_msgSend(). 它不显示调用的选择器(方法的名称)。

当有方法调用时,有没有办法让它注释被调用的选择器?

0 投票
1 回答
1087 浏览

macos - 如何在 dylib 中创建绝对路径引用?

[免责声明:我正在使用其他人的代码。我从来没有创建过 .dylib,所以我转向 SO]

我正在开发一个创建 .dylib 的发行版。它看起来不错,但是当我链接它时,生成的可执行文件会崩溃:

当我使用 otool 检查可执行文件时,问题很明显:(libstk最后一个条目的下一个)具有相对路径,而不是绝对路径。(顺便说一句,它没有正确设置兼容性或当前版本。)

问题

该发行版使用 g++(而不是 clang)作为其编译器。创建 .dylib 的当前咒语是:

它应该读什么来创建一个具有绝对路径的 .dylib?

更新

出于向后兼容性的原因,我们希望在构建时为 dylib 保留一个相对名称(即,我们不想将 -install_name 参数传递给g++ -fPIC ...命令)。

在构建具有绝对路径名之后,有没有办法调整 dylib?当我在现有文件上运行 otool -L 时,我看到:

我希望第一行是

ps

如果有人像我一样不耐烦,您可以使用install_name_tool一种解决方法来更新可执行文件,如下所示:

...但是每次构建可执行文件时不必这样做肯定会很好。

0 投票
1 回答
1731 浏览

c++ - 未加载 QMYSQL 驱动程序,尝试了所有提示

我正在使用 QT-Creator 作为 Mac os 10.8 上的 IDE 编写带有 QT 5.3 的 C++ 应用程序。当我尝试加载 QMYSQL 插件时出现问题

结果是

所以我尝试了

获得更好的输出

所以我尝试了otool

作为信息,我自己构建了 QMYSQL 插件

Everythink 似乎很好,我在 /etc/profile export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH 中设置了较早的 DYLD_LIBRARY_PATH

结果是

文件夹 /usr/local/mysql/lib :

.pro 文件的相关部分我正在使用

有没有人暗示我做错了什么?

PS我更改了用户和应用程序名称以保护隐私。