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

ios - 是否可以编辑和重新编译 iOS 二进制文件?

我有一个应用程序并最近发布到 Cydia。它已被其他人破解并发布在洪流网站上。我内部有一个二进制校验和验证机制,他们能够根据他们对二进制文件所做的更改创建一个新的校验和文件。他们编辑了两个函数并将其反编译并发布到种子。

我看到可以看到函数和类的实际实现。但是为了编辑函数,他们必须找到该函数的地址并通过 HEX EDITOR 进行编辑。我不想让它“无法破解”,但我真的很想知道他们是如何破解的。

如何在 iOS 二进制文件中编辑函数并重新编译?例如,我的一个课程中有以下方法。

我想编辑这个函数的返回值。那可能吗?

0 投票
2 回答
3466 浏览

ios - 将 iOS 崩溃转储中的偏移量匹配到反汇编的二进制文件

我无法将 iOS 崩溃转储的堆栈跟踪中的偏移量与 otool 输出的二进制反汇编中的偏移量相匹配。

任何人都可以确认我原则上是如何匹配这些的。例如,如果我在故障转储中得到一行:

我是否希望二进制文件中违规指令的偏移量为 0x5b0a、0x4b0a.... 或其他?

在对头信息的解码中,otool 还给出了例如该信息(实际代码从文件中的偏移量 0x0000224c 开始):

所以,我不是 100% 确定我是否正确解释了这一点,但似乎是在说文件中 +0x224c 处的代码在内存中的偏移量 0x124c 处结束,但后来我不确定这是怎么回事例如,安装位置 0x1000。

我遇到的问题是,假设偏移量为 0x5b0a,那里的指令、0x4b0a 或 0x6b0a 的指令都没有作为有问题的实际指令有意义(包括这样一个事实,即堆栈更下方的位置然后不指向分支指令)。

(我知道,至少在 ARM 的早期版本中,由于指令流水线,PC 的值与相应的内存地址之间存在差异。我假设在报告的偏移量中会考虑这种差异在故障转储中,或者无论如何,如果没有考虑到这种差异,我会看到有问题的分支指令,它的任一侧都指向了一些指令......)

任何人都可以解释一下吗?

0 投票
1 回答
416 浏览

macos - 当从 OSX 10.6 构建框架时,otool -l 在 OSX 10.5 上显示 (0x80000022) 未知加载命令

我使用 OSX 10.6 构建了一个框架,一切都很好,我将 Base SDK 和 Deployment SDK 设置为 10.5。我也只建造一个 i386 拱门。

当我将此框架带到 OSX 10.5 并在其上运行 otool -l 时,我得到以下结果:

“加载命令 6 cmd?(0x80000022)未知加载命令”

有人知道如何解决这个问题吗?

提前致谢

0 投票
2 回答
1042 浏览

c - 列出可执行文件中的全局变量

如何转储可执行文件中的所有全局变量和地址偏移量?

这是在 os x 上,使用 gcc 编译的 xcode 开发的应用程序。

谢谢

0 投票
2 回答
6575 浏览

macos - -bash: otool: command not found,你能教 bash 一个默认位置来查找命令吗?

我可以在我的文件系统中找到该工具命令:

如果我指定整个路径, otool 将起作用。

但是,由于我必须在我引用的 hello.c 文件的文件夹中,如果我只是键入,bash 将不会自动找到 otool

我在许多命令中遇到了同样的问题。有什么方法可以设置 bash 以便它自动找到 otool (和类似的命令),而无需我每次都写出整个路径名?谢谢!

注意:如果重要的话,我使用的是 Mac。

注意 2:我已经阅读了大量的“找不到命令”线程,但似乎没有一个回答教 bash 默认在哪里查找命令的问题。我觉得这个问题应该已经在某个地方得到了回答,但还没有遇到过。由于我将很快使用的唯一程序将与 iOS/Xcode 相关,因此这是值得的捷径。

0 投票
1 回答
1524 浏览

file - 在我的 xcode 项目中检测非公共 API 时 otool -L 的目标文件是什么

我正在寻找如何使用 otool 在我的 xcode 项目中检测非公共 API。我知道应该在终端中使用 otool 。但是当我使用 otool -L 时,它显示“无法映射文件:appname.app(无效参数)”。

我认为 otool 的目标文件是错误的,对吧?使用 xxx.app 文件。

请帮我。谢谢你的关注。

0 投票
1 回答
309 浏览

debugging - gdb 回溯输出和 otx (otool) 输出?

为什么该程序的 otx (otool) 汇编输出中没有 gdb 回溯输出中的地址?我的印象是它们对应于我的 otool asm 输出中的偏移量......如果这是一个愚蠢的问题,我深表歉意。

0 投票
4 回答
27573 浏览

macos - 获取可执行二进制文件的完整反汇编

是否可以获得可执行文件的完整反汇编(可以作为汇编程序的输入)?

当我使用时,otool -tV a.out我只能看到文本部分。数据等其他部分不可见。

当我使用gdb时,反汇编命令需要一个开始地址和一个结束地址。但是我不知道如何找出二进制文件的开始和结束地址(比如 a.out)。

我正在尝试反汇编一个可执行文件,修改汇编代码,然后重新组装它。那可能吗?

如果可以找出二进制文件中所有部分的名称,那也会有所帮助。

0 投票
1 回答
512 浏览

iphone - iOS 应用降级兼容性要求

我想知道是否可以将应用程序从应用商店(ARM 二进制)降级到较低版本。例如,如果应用程序需要 iOS 5.0 或 4.3 或更高版本,则让它在 iOS 4.2 或 4.0 上运行。

我了解这些要求很重要,因为较新的版本包含仅在较新的 iOS 平台上公开的 API 链接调用。但是,我有许多可以在较低版本上运行的应用程序在较新版本的 xcode 上不必要地编译(只是一个小更新支持 iOS 支持版本的巨大跳跃,如 iOs 4.0 -> iOs 5.0)

我想做的可能是通过验证没有新的链接函数 api 并将 plist 文件调整为较低版本来将 iOS 5.0 应用程序降级到 iOS 4.3 应用程序?otool 或 class-dump 可以帮助解决这个问题吗?

0 投票
1 回答
3640 浏览

macos - otool 错误:不是目标文件

我在 Mac OS 上有两个文件。一个 Mach-O 可执行 i386 和一个数据(我的 Finder 中的相同 exec 图标)。

当我第一次执行 otool -tV 命令时,我打印了我的汇编代码。但是当我为我的第二个文件编写它时,我收到了这条消息:myFile: is not an object file。

知道如何转换或直接读取数据文件?