问题标签 [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 回答
203 浏览

dylib - OS X:编译后 dylib rpath 错误

我正在从源代码构建 cyrus sasl2 库。库安装在 /usr/local/lib 中,头文件安装在 /usr/local/include/sasl 中,这是正确的。

但是,当我运行尝试使用它们的应用程序时,我得到:

在 lib 上运行 otool -L 会显示错误的相对路径:

如何更改 make 编译库的方式以便编码正确的 rpath?我阅读了有关 install_name_tool 以在库中更改它的信息,但使用“-change”似乎不起作用,因为正确的路径“/usr/local/lib/libsasl2.dylib”比当前编码的路径长。我不应该在我以某种方式构建库时设置它吗?

谢谢。

0 投票
0 回答
1708 浏览

c - otool 显示器可以用源码反汇编吗?

在 linux 上,我使用objdump -dS filec 源代码显示反汇编。
在 mac OSX 上我otool改用,但man otool没有提到相应的选项。我的问题有什么解决办法吗?

这是我的c源:

我想显示b.out's disassemble with source:

不幸的是,我只会拆卸。

0 投票
1 回答
862 浏览

c++ - otool 输出中的相对路径?

我在使用 C++ 编译的库文件时遇到了一些问题,因此我使用了otool命令行实用程序(在 OSX 上)来查看它链接的文件。

这是输出:

大多数链接的文件都由绝对路径引用,例如/usr/local/opt/tbb/lib/libtbb.dylib.

但是,有些似乎是相对路径引用的,就像文件名一样,例如libboost_python.dylib.

这是什么意思?

这是否意味着在运行时libboost_python.dylib可以链接不同版本的,具体取决于路径上首先找到的内容?或者是搜索这些“相对”路径的其他方法?

0 投票
1 回答
1448 浏览

ios - 在 OS X 上使用 nm(1) 列出为 arm64 构建的目标文件中的符号

有谁知道如何从我为 arm64 架构构建的目标文件中列出符号?

我尝试使用nm,但它给了我一个错误:

是否可以使用 做同样的事情otool

0 投票
0 回答
1131 浏览

ios - 使用非公开 API 的应用将被拒绝

我们的应用程序已被苹果拒绝,并显示以下消息:(我在列中输入了提到的任何 api 的位置)

我们发现您的应用使用了一个或多个非公共 API,这不符合 App Store 审核指南。不允许使用非公共 API,因为如果这些 API 发生更改,可能会导致糟糕的用户体验。

我们在您的应用中发现了以下非公共 API:

  • BuyFreeWinTicket_marshal___:numbers:os:,(我的内部代码)
  • getCellValidationInfo_unmarshal___:好的:,(我的内部代码)
  • AddAnimationPointForBall:nextX:nextY:forDuration:, (我的内部代码) UIViewController, (?)
    • addSessionCookie:,(我的内部代码)
    • CanDoAutomaticLogin,(我的内部代码)
    • activeSessionIfExists,(我的内部代码)
  • AddSeperatorsToNumber:,(我的内部代码)
  • addRequestToExtendTokenForSession:connection:,(我的内部代码)
    • cworksImpression, (?)
  • AddFilterWithInex:,(我的内部代码)
  • ApplySuperKeypad,(我的内部代码)
  • applicationDidOpenURL:sourceApplication:,(我的内部代码)
    • clearPersistedAppEventData, (?)
  • canPresentMessageDialog, (?)
  • applicationDidOpenURL:sourceApplication:,(我的内部代码)
  • DeleteOldLogLines,(我的内部代码)
  • hideAllHUDsForView:animated:,(我的内部代码)
  • ServerRegistrationResponseOk:,(我的内部代码)
  • requestForCustomAudienceThirdPartyID:, (?)
  • automaticNotifiesObserversForKey:, (?)
  • addOrRemovePendingConnection:, (?)
  • addHEADOperation:, (3rd party ASIHTTPRequest) NSOperationQueue, (3rd party ASIHTTPRequest) -DisplayUserSuspendedDialogWithMessage:ReleaseByCaptcha:CaptchaURL:AndReturnTo:, (我的内部代码)
    • likeActionControllerForObjectID:, (?)
  • _parseDialogConfigs:, (?)
  • BackFromLottoLoginForNag:withEmail:andPassword:,(我的内部代码)
    • cacheRefreshDelay,(?)FBViewController,(第3方 - 看起来像FB SDK)
  • deleteUnitTestUser:accessToken:, (?)
  • FathersAndMothersDisplayMothers:,(我的内部代码)
  • addRoundedRectToPath:rect:radius:, (?)
  • 连接:didFailWithError:, (?)
  • createTokenFromDictionary:, (?)
  • FBSDKInitializeWithLaunchData:,(第 3 方 - 看起来像 FB SDK)
  • fileExtensionsToHandleAsHTML,(第 3 方 ASIHTTPRequest)
  • _analyticsParameters, (?)
  • _copyValueForKey:fromDictionary:toDictionary:, (?)
  • appCallFromApplinkArgs_v2:applinkArgs:createTimeUTC:originalQueryParameters:, (?)
  • requestWithUserID:fields:dataSource:session:, (?) FBGraphObjectPickerViewController, (第 3 方 - 看起来像 FB SDK)
  • DisplayErrorConnectingToCheckoutServer,(我的内部代码)
  • graphObjectWrappingDictionary: (?)

如果您在源代码中定义了与上述 API 同名的方法,我们建议您更改方法名称,以便它们不再与 Apple 的私有 API 冲突,以避免您的应用程序在以后的提交中被标记。

此外,一个或多个上述 API 可能驻留在应用程序随附的静态库中。如果您无权访问该库的源代码,则可以使用“strings”或“otool”命令行工具搜索已编译的二进制文件。“strings”工具可以输出库调用的方法列表,“otool -ov”将输出Objective-C类结构及其定义的方法。这些技术可以帮助您缩小有问题的代码所在的位置。

  1. 该消息是否意味着 Apple 拥有与上述 API 具有相同签名的私有 API?(这意味着他们使用“-DisplayUserSuspendedDialogWithMessage:ReleaseByCaptcha:CaptchaURL:AndReturnTo:”作为私人签名 - 这是不可能的)

  2. 我们如何解决这个问题 - 我们是否需要更改所有上述 API 名称?

  3. 我们如何验证我们是否解决了问题,或者我们自己是否会遇到相同的错误(我尝试使用 app sccanner - 它没有找到任何私有 Api,我尝试使用字符串和 otool 但我没有了解我需要寻找的东西)

如果有人可以帮助我们,那将非常有帮助

关于第 3 方 - 我们使用 FB SDK (ver 3.19), ASIHTTPRequest

0 投票
1 回答
1308 浏览

ios - 拆分多架构 Mach-o 二进制文件

我已经从应用商店(我们称之为 myApp)下载并解密(使用dumpdecrypted )一个 iOS 应用程序。当我运行“otool -arch all -Vh myApp”时,我得到以下结果:

我希望能够将二进制文件分成两个文件,每个架构一个。我想这可以通过解析 Mach-o 标头来完成,但我不知道怎么做。

谢谢。

0 投票
2 回答
264 浏览

assembly - 转储 i386 汇编代码并重新编译为 PPC?

我使用 Apple 内置的“otool”命令和“-Vvtd”开关来转储 Mach-O i386 二进制文件,重定向到 .s 文件。我曾尝试使用 nasm 和 GAS 汇编器在 PPC 机器上重新编译代码(gcc/darwin 的 i386 目录中的“as”-binary 和 ppc 目录中的“as”-binary),但未成功。输出内容如下:

还有一个数据部分,如下所示:

...

...

...

我打算在 PPC 上的 Mac 中运行二进制文件,因此需要重新编译;我尝试删除最左侧列中的地址以使语法更像“AT&T”风格,留下它们等等。我不想对现有代码结构进行任何编辑(这不完全是逆向工程,本身,只是一些定制)。但是,如果我必须进行任何编辑,我非常希望它能够严格地使 i386 的现有、纯正代码在 PPC 上运行。

我将非常感谢您的帮助。

问候

0 投票
2 回答
208 浏览

c - C std 库似乎没有在目标文件中链接

我正在使用这样的程序,其中使用了 math.h 函数“sin”和 stdio.h 函数“printf”

正如 ehemient 所说 libc.so 和 libm.so(用于数学函数)应该已经与程序链接,尽管当我使用打印的选项“-L”在目标文件上运行 otool(类似于 objdump)时使用的共享库,没有 libc.so 或 libm.so 被打印出来

那么这是什么原因呢?我使用 otool 错了吗?或者那些库不应该显示为共享库?

0 投票
0 回答
221 浏览

python - Homebrew 找不到 otool 或 clang

我正在尝试使用自制软件安装 Python 3,但它失败并出现错误。当我运行brew doctor它说:

错误:执行失败:/usr/bin/otool -L /usr/bin/install_name_tool

我该如何解决?

0 投票
0 回答
1375 浏览

qt - macdeployqt 错误:无法解析 rpath “QtGui.framework/Versions/5/QtGui(兼容版本 5.5.0,当前版本 5.5.0)”

我使用 qmake 在我的 MacBook 上编译我的 Qt 应用程序项目。
它需要一个名为 dylib 的 dylib libcore.dylib,我把它放到了 dir$$OUT_PWD/../libs中。

为了编译,我在.pro文件中添加了这段代码

为了跑步,我加了

编译libcore.dylib,我添加

完成后,我可以直接运行生成的应用程序。
但是当我使用 部署应用程序时macdeployqt,会发生错误。

rpaths 的 QSet 不包含 /Users/sjchao/Applications/Qt/5.5/clang_64/lib
但最终编译的 cmd 包含-Wl,-rpath,/Users/sjchao/Applications/Qt/5.5/clang_64/lib! 没用?_
我看到了一点macdeployqtshared.cpp,然后我用otool -l来看LC_RPATH

查看shared.cpp中的一些代码

LC_RPATH使用, rpathsshould contains运行此代码/Users/sjchao/Applications/Qt/5.5/clang_64/lib,但错误消息说不。
我的 Qt 版本是 5.5.0,我已经使用 MaintenanceTool 将它更新到最新版本。
我应该怎么办?它是一个错误macdeployqt吗?有什么建议么?