【发布时间】:2019-02-19 17:35:07
【问题描述】:
我可以像下面这样反汇编一个目标文件。但我只想将特定函数(例如 add4)的原始数字(如 55、48、...)以二进制格式转储到文件中。
我可以编写一个程序来解析 otool 的输出。但是有没有更简单的方法呢?
我的操作系统是 Mac OS X。
$ cat add.c
long x;
long add2(long num) {
return num + 2;
}
long add4(long num) {
return num + 4;
}
$ clang -c -o add.o add.c
$ otool -tvjV add.o
add.o:
(__TEXT,__text) section
_add4:
0000000000000000 55 pushq %rbp
0000000000000001 48 89 e5 movq %rsp, %rbp
0000000000000004 48 89 7d f8 movq %rdi, -0x8(%rbp)
0000000000000008 48 8b 7d f8 movq -0x8(%rbp), %rdi
000000000000000c 48 83 c7 04 addq $0x4, %rdi
0000000000000010 48 89 f8 movq %rdi, %rax
0000000000000013 5d popq %rbp
0000000000000014 c3 retq
0000000000000015 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:_add4(%rax,%rax)
000000000000001f 90 nop
_add2:
0000000000000020 55 pushq %rbp
0000000000000021 48 89 e5 movq %rsp, %rbp
0000000000000024 48 89 7d f8 movq %rdi, -0x8(%rbp)
0000000000000028 48 8b 7d f8 movq -0x8(%rbp), %rdi
000000000000002c 48 83 c7 02 addq $0x2, %rdi
0000000000000030 48 89 f8 movq %rdi, %rax
0000000000000033 5d popq %rbp
0000000000000034 c3 retq
【问题讨论】:
标签: macos object disassembly objdump otool