- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试符号化反转的 iOS 二进制文件。于是开始学习Mach-O格式here并编写了一个基本程序来测试将一个符号手动添加到剥离二进制文件的简单示例 (!):
#include <stdio.h>
#include <stdlib.h>
int division(int a, int b);
int m;
int main(void)
{
int i,j;
printf("initializing i\n");
i = 10;
printf("initializing j\n");
j=1;
printf("i = %d, j = %d\n", i, j);
m = division(i, j);
printf("m = %d / %d = %d\n", i, j, m);
return 0;
}
int division(int a, int b)
{
return a / b;
}
我做了什么:
otool -l
输出反射(reflect)了这一点(“* * * * *”是 helloworld_stripped 和 '--- -' 是 helloworld_stripped2):
问题:
修补后的可执行文件“helloworld_stripped2”缺少 printf 函数。为什么 printf 函数在剥离的可执行文件中而不是在修补的可执行文件中?我没有在符号表中更改它,并且 printf 在字符串表中的位置也没有更改。
非常感谢任何建议!
编辑:请参阅下面的答案。
最佳答案
好吧,基本上,我自己发现了问题:我忘记用新的符号表条目值更新间接符号表。当我更新它时,IDA pro 能够同时显示 _division 和 _printf。
圈出的值对应符号表中的项索引。由于符号表被更新,间接(如 printf)符号的索引发生变化。因此必须修改动态符号表以反射(reflect)它们的新条目索引。希望它能帮助那里的人。
关于ios - Mach-O 二进制 : external undefined symbols not found after patching symtab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20238892/
我正在尝试手写 Mach-O 可执行文件。加载命令共有三个: LC_SEGMENT_64正在加载__PAGEZERO LC_SEGMENT_64 加载 __TEXT,带有单个 __text 部分 LC
从 objc 源代码我们可以看到 SEL 被定义为 typedef struct objc_selector *SEL; 我用 idaq 反汇编了我的 dylib ,我确实调用了 _MSHookMes
我正在尝试在 Mach 上的两个进程之间发送消息(准确地说,这是带有 Mach 微内核的 Debian GNU/Hurd),这是我的代码: #define _GNU_SOURCE #include
我对使用信号量感兴趣,它是使用 mach/semaphore.h 中的 semaphore_create(task, sem, policy, value) 创建的,在共享内存中用于在 Mac OS
我想在共享内存中使用匿名信号量来同步多个进程。 虽然多个 POSIX 操作系统提供匿名信号量(通过 sem_init 和相关函数),但 macOS 不支持它们。 我发现 Mach 信号量在 macOS
我正在尝试将 mach 端口传递给使用 fork 创建的子进程在 Mac OSX 上。我看到了这个问题 Sharing Mach ports with child processes但它没有解决方案,
构建应用程序时生成的 dsym 文件的结构是什么。我知道它包含 DWARF 调试信息,但什么是 dsym 文件。我想阅读其中的 DWARF 信息。 它只是一个只包含调试部分的 Mach-O 二进制文件
当 SOVERSION 的文档出现时,我正在考虑对一个小型个人项目的共享库进行版本控制。 target 属性提到在 OS X 和 iOS 等 Mach-O 系统上,对应的是“兼容版本”,而 VERSI
我正在尝试实现在项目中发现的openssl代码,但这些链接器错误并没有消失。我检查了框架是否正确链接,甚至使用../lib和../include手动包含了库和 header 搜索路径。尽管如此,当我摆
这个问题已经有答案了: Mach-O 64-bit format does not support 32-bit absolute addresses. NASM Accessing Array (1
我正在寻找有关如何设计 Mac OS X 网络内核扩展的特定部分以尽可能快速和高效的建议或指示 - C 语言。 描述:我有两套 TAILQ 列表。一个用于 A 型结构,另一个用于 B 型结构。大多数情
我有一个用 C++ 编写的服务器,它在 osx 上运行时会泄漏 Mach 端口。具体来说,运行时 top我注意到它有大约 50000(在 #PORTS 下)。奇怪的是,我让它运行了一夜,第二天机器基本
我修改了CoreData数据集,并向无错误的iPhone应用程序添加了两个新类。现在,当我尝试编译时,出现此错误: Apple Mach-OP Linker Error Linker command
我正在对 Mac OS X 上可用的不同 IPC 机制(管道、套接字、System V IPC 等)进行比较,我想看看 Mach 端口与更高级别的替代方案相比如何。但是,我遇到了一个非常基本的问题:跨
升级到Xcode 8.3.2后,尝试在设备上运行时,我收到了Apple Mach-O链接程序警告(它正在模拟器上运行)。但是我没有得到任何细节。双击该错误不会带来有关链接器警告的更多信息。有人可以帮忙
我有 2 张 table 。 表1 共有约 2700 行 列:ID、NO、NAME 表2: 共有约 300 行 列:ID、NAME 地点: Table1.NO = Table2.ID 我想列出 Tab
我在我的 iOS 应用程序中使用了一些第三方库(库有 flurry、chartboost 和burSTLy)。所有这些第三方库都有静态库,我通过将它们添加到“将二进制与库链接”中来将它们包含在我的项目
Undefined symbols for architecture x86_64: "_BFTaskMultipleExceptionsException", referenced from:
我正在尝试设置一条 mach 消息,以使用 mach IPC 发送越界的字符串。但是,在尝试发送越界消息时,我收到了 (ipc/send) invalid msg-header 错误。 这是消息结构。
为什么 SELECT * , MATCH(tags) AGAINST('php' IN BOOLEAN MODE) .. etc 不返回任何东西(而 php 标签存在于许多行中) 和 SELECT *
我是一名优秀的程序员,十分优秀!