问题标签 [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.
ios - 将符号添加到静态库的外部名称目录
我对由特定静态库生成的符号列表otool
和nm
为特定静态库生成的符号列表的差异感到困惑。我正在尝试链接一些静态库以创建最终的可执行文件,但链接器抱怨Undefined symbols: "_main", referenced from: _main$non_lazy_ptr in crt1.o
. 如果我nm
在其中一个库 ( libext.a
) 上执行此操作,我会看到它_main
是在一个名为main.o
. 但是如果我在同一个otool-s
库上做一个,我会发现存档部分中_main
没有它。__.SYMDEF
我如何强制_main
包含在此部分中?在图书馆做事ranlib -c
没有帮助。
iphone - 如何使用otool
苹果建议我使用“字符串”或“otool”来检测我的代码中的私有 api (isinf),我完全是新手,所以任何帮助如何使用这些工具
xcode - xcode 没有正确构建静态库(函数不在其中)
基本上我能够在 xcode4 中创建和编译一个静态库,但是 otool 没有读取这些函数。我设法做到了一次,以便它可以工作,但从那以后每隔一次它都失败了,所以我知道我一定错过了一个明显的步骤。
我目前所做的是在 xcode4 中创建一个基于视图的新应用程序,然后添加一个新目标(Numbers),向 Numbers 添加一个名为 File.c 的源文件,其内容是:
然后我编译它(确保我在构建方案下拉菜单中选择了 Numbers |iPhone 4.3 Simulator)。
但是当我在 libNumbers.a 上运行 otool -S 时,我没有得到任何结果:
ranlib 结构的大小:0(数字 0)对象偏移字符串索引
我知道那里应该有一些东西,因为如果我在正确构建的 libNumbers.a 上运行 otool -S 我会得到一些数字而不是 0:
ranlib 结构的大小:16(数字 2)对象偏移字符串索引 136 0 136 7
我真的不知道我到底做错了什么,我尝试回溯我对我所做的成功的 lib 编译所做的事情,但没有真正找到任何东西来说明为什么用那个编译的函数而不是这些函数。
iphone - 使用 otool 反汇编默认的 iOS 应用
当我尝试使用 otool 拆解现有的 iOS 应用程序(不是应用程序商店的应用程序)时,它不会分成不同的方法。这只是一个巨大的部分。这是我正在使用的命令:
otool -tV theApp.app/theApp >~/Desktop/output.txt
有没有办法将反汇编拆分为方法?
dyld - XQuartz dynamic loading error
I updated XQuartz, and now it doesn't load, complaining that:
However, if I otool -L /opt/X11/lib/libfreetype.6.dylib
:
So the library is the right version!
What could cause this error?
macos - 为什么 Mac Os X 中的 Mach-O 库需要 install_name_tool 和 otool?
我正在使用最新版本的 Xcode 4 开发 Cocoa 应用程序,我想将动态库链接到我的项目 ( dylibs
)。
我在某处读到,在我的项目中添加库是不够的,因为我必须运行install_name_tool
并otool
让我的项目使用捆绑在我的项目中的库。
我已经阅读了 的手册页install_name_tool
,但我不明白为什么我必须这样做。
图书馆如何运作?对应用程序和库具有指向我机器中特定位置的路径的部分特别感兴趣,例如/usr/local/lib/mylibrary.dylib
运行时otool -L
macos - Mac OS X 中你最喜欢的反汇编工具是什么?
我正在使用otool
,nm
和Fraise
文本编辑器来反汇编Mach-o
二进制文件。此时我的工作流程非常简单:
-
1.列出已存在的符号。
-
2.获取disasm代码。
-
3. 将此输出复制并粘贴到文本文件中。
-
4.在文本编辑器中阅读并评论代码:)
我正在寻找可以简化使用 disasm 代码的工具Mac OS X
。
assembly - 相对于 EBP 的非常正的偏移量
我有一个i386
二进制文件,没有机会执行它。otool -tv
说:
一些功能或方法:
下面某处的说明
让我失望了!0xe0(%ebp)
指向哪里?我认为这不是一个局部变量,因为正偏移。otool
我可以在所有输出中看到这样的访问。如何解释它?
linker - 如何解析 dyld 导入的符号?
我正在尝试实现 dyld 所做的某些部分,但我有点卡在 stub trampolines 上。
考虑以下 ARM 指令:
它通过链接(子过程调用)分支到 0x2fec。我知道这样一个事实,在 __TEXT 段中有一个 __symbolstub1 部分从 0x2fd8 开始,所以它是 __symbolstub1 内部的 20 个字节的跳转。
现在有一个符号
我已经通过 LC_SYMTAB 加载命令解决了。没有提供已知地址。事实上,我知道 0x2fec 地址是 _objc_autoreleasePoolPush 的蹦床,但我无法通过任何方式证明这一点。
我检查了 LC_DYLD_INFO_ONLY 命令,在我发现的lazy_bind 符号中,我有一点提示:
其中名称和偏移量与我所拥有的完全匹配,并且库#6 是“/usr/lib/libobjc.A.dylib”,这也是完美的。现在的问题是段#2 是__TEXT,但__TEXT 从0x1000 开始,而__symbolstub1 在0x2fd8 处。所以我错过了一些参考。
关于我应该如何将 0x2fec 虚拟地址映射到 _objc_autoreleasePoolPush 的任何想法?
macos - Xcode 4、dylib 和 install_name_tool
我正在尝试让 dylib 在我的 OSX 项目中工作。
我一直在阅读一些示例,特别是这个: Xcode 4 added dylib
但我仍然无法让它工作。
以下是我执行的步骤:
- 将 testing.1.dylib 复制到我的 Xcode 项目文件夹中。
- 冉
sudo install_name_tool -id @executable_path/../Frameworks/testing.1.dylib testing.1.dylib
冉:
otool -L testing.1.dylib
并收到以下信息:testing.1.dylib:
@executable_path/../Frameworks/testing.1.dylib(兼容版本 2.0.0,当前版本 2.0.0)
/usr/lib/libSystem.B.dylib(兼容版本 1.0.0,当前版本 159.1.0)将
testing.1.dylib
作为框架添加到项目中。(使用带有库选项的链接包)。- 此时,当我编译 testing1.dylib 时并没有像我预期的那样被复制到 .App/Framework 中,所以我手动创建了 Framework 路径并将 testing.1.dylib 复制到它: a) mkdir -p testing.app /Contents/Frameworks b) cp testing.1.dylib testing.app/Contents/Frameworks
- 在 Xcode 中,我
Runtime Search Paths
将 Target 和 Project 都更新为:@executable_path/../Frameworks。
现在我将 testing.app 复制到一个单独的新安装的机器上并尝试运行它。我收到以下错误:
dyld:库未加载:/user/local/lib/testing1.dylib 引用自:/Users/me/testing.app/MacOS/./testing 原因:找不到图像
我错过了什么?
注意:运行 install_name_tool 时,我需要使用 sudo 否则会出现以下错误:
install_name_tool:无法打开输入文件:testing.1.dylib 用于写入(权限被拒绝) install_name_tool:无法在文件中偏移:0:testing.1.dylib 用于写入(错误的文件描述符) install_name_tool:不能在文件中写入新标头:testing.1.dylib(错误文件描述符) install_name_tool:无法关闭写入输入文件:testing.1.dylib(错误文件描述符)