如何从 objdump 获取信息
我在读取 Linux 中的可执行文件中转储的信息时遇到问题。 信息如下:
804a0ea: 04 08 add $0x8, %al
...
804a0f4: a6 cmpsb %es:(%edi),%ds:(%esi)
我有两个问题:
- 地址804a0ea和804a0f4是什么意思?进程地址空间中的虚拟地址?
- ... 是什么意思?如何获取地址 804a0f0 处的指令?
提前致谢。
有关这部分代码的更多信息:
Disassembly of section .got.plt:
0804a0e8 <_GLOBAL_OFFSET_TABLE_>:
804a0e8: 14 a0 adc $0xa0,%al
804a0ea: 04 08 add $0x8,%al
...
804a0f4: a6 cmpsb %es:(%edi),%ds:(%esi)
804a0f5: 87 04 08 xchg %eax,(%eax,%ecx,1)
804a0f8: b6 87 mov $0x87,%dh
804a0fa: 04 08 add $0x8,%al
804a0fc: c6 87 04 08 d6 87 04 movb $0x4,-0x7829f7fc(%edi)
804a103: 08 e6 or %ah,%dh
804a105: 87 04 08 xchg %eax,(%eax,%ecx,1)
804a108: f6 87 04 08 06 88 04 testb $0x4,-0x77f9f7fc(%edi)
804a10f: 08 16 or %dl,(%esi)
804a111: 88 04 08 mov %al,(%eax,%ecx,1)
804a114: 26 88 04 08 mov %al,%es:(%eax,%ecx,1)
804a118: 36 88 04 08 mov %al,%ss:(%eax,%ecx,1)
804a11c: 46 inc %esi
希望任何人都可以帮助我。:-)
I encounter a problem when reading information dumped out from an executable file in linux.
The information is as follows:
804a0ea: 04 08 add $0x8, %al
...
804a0f4: a6 cmpsb %es:(%edi),%ds:(%esi)
I have two questions:
- what does the address 804a0ea and 804a0f4 mean? the virtual address in the process's address space?
- what does the ... mean? how can I get instruction at address 804a0f0?
Thanks in advance.
More information around this part of code:
Disassembly of section .got.plt:
0804a0e8 <_GLOBAL_OFFSET_TABLE_>:
804a0e8: 14 a0 adc $0xa0,%al
804a0ea: 04 08 add $0x8,%al
...
804a0f4: a6 cmpsb %es:(%edi),%ds:(%esi)
804a0f5: 87 04 08 xchg %eax,(%eax,%ecx,1)
804a0f8: b6 87 mov $0x87,%dh
804a0fa: 04 08 add $0x8,%al
804a0fc: c6 87 04 08 d6 87 04 movb $0x4,-0x7829f7fc(%edi)
804a103: 08 e6 or %ah,%dh
804a105: 87 04 08 xchg %eax,(%eax,%ecx,1)
804a108: f6 87 04 08 06 88 04 testb $0x4,-0x77f9f7fc(%edi)
804a10f: 08 16 or %dl,(%esi)
804a111: 88 04 08 mov %al,(%eax,%ecx,1)
804a114: 26 88 04 08 mov %al,%es:(%eax,%ecx,1)
804a118: 36 88 04 08 mov %al,%ss:(%eax,%ecx,1)
804a11c: 46 inc %esi
Hope anyone can give me a hand.:-)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
或输入终端 gdb
然后输入布局asm并输入然后打印
or type in terminal gdb
and then type layout asm and type then print
全局偏移表不是指向代码,它指向数据(hrm...实际上是偏移量)。因此尝试反汇编它不会给出非常有意义的代码。 (您实际上可以通过查看代码值来找到哪些偏移量。0804a014,... 080487a6)。
... 通常表示流中存在一堆 0。
The global offset table is not pointing to code, it's pointing to data (hrm... offsets, actually). So trying to disassemble it will not give very meaningful code. (you can actually find which offsets by looking at the code values. 0804a014, ... 080487a6).
The ... usually mean a bunch of 0's are in the stream.