Ios Mach-O二进制:修补symtab后未找到外部未定义符号
我正试图用符号化的方法来表示反转的iOS二进制文件。因此,我开始学习Mach-O格式,并编写了一个基本程序来测试一个简单的示例,即手动将一个符号添加到精简二进制文件中(!):Ios Mach-O二进制:修补symtab后未找到外部未定义符号,ios,c,ida,mach-o,dyld,Ios,C,Ida,Mach O,Dyld,我正试图用符号化的方法来表示反转的iOS二进制文件。因此,我开始学习Mach-O格式,并编写了一个基本程序来测试一个简单的示例,即手动将一个符号添加到精简二进制文件中(!): #包括 #包括 国际分部(国际a、国际b); int m; 内部主(空) { int i,j; printf(“初始化i\n”); i=10; printf(“初始化j\n”); j=1; printf(“i=%d,j=%d\n”,i,j); m=分区(i,j); printf(“m=%d/%d=%d\n”,i,j,m);
#包括
#包括
国际分部(国际a、国际b);
int m;
内部主(空)
{
int i,j;
printf(“初始化i\n”);
i=10;
printf(“初始化j\n”);
j=1;
printf(“i=%d,j=%d\n”,i,j);
m=分区(i,j);
printf(“m=%d/%d=%d\n”,i,j,m);
返回0;
}
整数分割(整数a,整数b)
{
返回a/b;
}
我所做的:
otool-l
输出反映了这一点(“***”为helloworld_stripped,“---”为helloworld_stripped2):
otool-l-加载命令已更改“>编辑:参见下面的答案。好的,基本上,我自己发现了问题:我忘了用新的符号表条目值更新间接符号表。当我更新它时,IDA pro能够同时显示_division和_printf
圆圈中的值与符号表中的项目索引相对应。由于符号表已更新,间接(如printf)符号的索引将发生变化。因此,必须修改动态符号表以反映其新的条目索引。希望它能帮助其他人。以三个问题而不是一个问题的形式提问
#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;
}