dump

来源:互联网 发布:淘宝上的k歌麦克风 编辑:程序博客网 时间:2024/05/22 02:28
举例:
//test.cpp
class Base{
public:
Base();
int a;
};
Base::Base(){
}
class Foo: public Base{
public:
int val;
Foo * pnext;
};
int main(){
Foo myFoo;
return 0;
}
//makefile
all:test.o
g++ test.o -o test
test.o:test.cpp
g++ -c test.cpp -o test.o
// 反汇编全部段
objdump -D test.o
test.o: file format elf32-i386
Disassembly of section .group:
00000000 <_ZN3FooC5Ev>:
0: 01 00 add %eax,(%eax)
2: 00 00 add %al,(%eax)
4: 06 push %es
5: 00 00 add %al,(%eax)
...
Disassembly of section .text:
00000000 <_ZN4BaseC1Ev>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 5d pop %ebp
4: c3 ret
00000005 <main>:
5: 55 push %ebp
6: 89 e5 mov %esp,%ebp
8: 83 e4 f0 and $0xfffffff0,%esp
b: 83 ec 20 sub $0x20,%esp
e: 8d 44 24 14 lea 0x14(%esp),%eax
12: 89 04 24 mov %eax,(%esp)
15: e8 fc ff ff ff call 16 <main+0x11>
1a: b8 00 00 00 00 mov $0x0,%eax
1f: c9 leave
20: c3 ret
Disassembly of section .text._ZN3FooC2Ev:
00000000 <_ZN3FooC1Ev>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 83 ec 04 sub $0x4,%esp
6: 8b 45 08 mov 0x8(%ebp),%eax
9: 89 04 24 mov %eax,(%esp)
c: e8 fc ff ff ff call d <_ZN3FooC1Ev+0xd>
11: c9 leave
12: c3 ret
Disassembly of section .comment:
00000000 <.comment>:
0: 00 47 43 add %al,0x43(%edi)
3: 43 inc %ebx
4: 3a 20 cmp (%eax),%ah
6: 28 55 62 sub %dl,0x62(%ebp)
9: 75 6e jne 79 <main+0x74>
b: 74 75 je 82 <main+0x7d>
d: 2f das
e: 4c dec %esp
f: 69 6e 61 72 6f 20 34 imul $0x34206f72,0x61(%esi),%ebp
16: 2e cs
17: 35 2e 32 2d 38 xor $0x382d322e,%eax
1c: 75 62 jne 80 <main+0x7b>
1e: 75 6e jne 8e <main+0x89>
20: 74 75 je 97 <main+0x92>
22: 34 29 xor $0x29,%al
24: 20 34 2e and %dh,(%esi,%ebp,1)
27: 35 .byte 0x35
28: 2e 32 00 xor %cs:(%eax),%al
Disassembly of section .eh_frame:
00000000 <.eh_frame>:
0: 14 00 adc $0x0,%al
2: 00 00 add %al,(%eax)
4: 00 00 add %al,(%eax)
6: 00 00 add %al,(%eax)
8: 01 7a 52 add %edi,0x52(%edx)
b: 00 01 add %al,(%ecx)
d: 7c 08 jl 17 <.eh_frame+0x17>
f: 01 1b add %ebx,(%ebx)
11: 0c 04 or $0x4,%al
13: 04 88 add $0x88,%al
15: 01 00 add %eax,(%eax)
17: 00 1c 00 add %bl,(%eax,%eax,1)
1a: 00 00 add %al,(%eax)
1c: 1c 00 sbb $0x0,%al
1e: 00 00 add %al,(%eax)
20: 00 00 add %al,(%eax)
22: 00 00 add %al,(%eax)
24: 05 00 00 00 00 add $0x0,%eax
29: 41 inc %ecx
2a: 0e push %cs
2b: 08 42 85 or %al,-0x7b(%edx)
2e: 02 0d 05 41 c5 0c add 0xcc54105,%cl
34: 04 04 add $0x4,%al
36: 00 00 add %al,(%eax)
38: 1c 00 sbb $0x0,%al
3a: 00 00 add %al,(%eax)
3c: 3c 00 cmp $0x0,%al
3e: 00 00 add %al,(%eax)
40: 00 00 add %al,(%eax)
42: 00 00 add %al,(%eax)
44: 13 00 adc (%eax),%eax
46: 00 00 add %al,(%eax)
48: 00 41 0e add %al,0xe(%ecx)
4b: 08 42 85 or %al,-0x7b(%edx)
4e: 02 0d 05 4f c5 0c add 0xcc54f05,%cl
54: 04 04 add $0x4,%al
56: 00 00 add %al,(%eax)
58: 1c 00 sbb $0x0,%al
5a: 00 00 add %al,(%eax)
5c: 5c pop %esp
5d: 00 00 add %al,(%eax)
5f: 00 05 00 00 00 1c add %al,0x1c000000
65: 00 00 add %al,(%eax)
67: 00 00 add %al,(%eax)
69: 41 inc %ecx
6a: 0e push %cs
6b: 08 42 85 or %al,-0x7b(%edx)
6e: 02 0d 05 58 c5 0c add 0xcc55805,%cl
74: 04 04 add $0x4,%al
...
// 反汇编 ,并解析一部分symbol为正常序号
objdump -DC test.o
test.o: file format elf32-i386
Disassembly of section .group:
00000000 <_ZN3FooC5Ev>:
0: 01 00 add %eax,(%eax)
2: 00 00 add %al,(%eax)
4: 06 push %es
5: 00 00 add %al,(%eax)
...
Disassembly of section .text:
00000000 <Base::Base()>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 5d pop %ebp
4: c3 ret
00000005 <main>:
5: 55 push %ebp
6: 89 e5 mov %esp,%ebp
8: 83 e4 f0 and $0xfffffff0,%esp
b: 83 ec 20 sub $0x20,%esp
e: 8d 44 24 14 lea 0x14(%esp),%eax
12: 89 04 24 mov %eax,(%esp)
15: e8 fc ff ff ff call 16 <main+0x11>
1a: b8 00 00 00 00 mov $0x0,%eax
1f: c9 leave
20: c3 ret
Disassembly of section .text._ZN3FooC2Ev:
00000000 <Foo::Foo()>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 83 ec 04 sub $0x4,%esp
6: 8b 45 08 mov 0x8(%ebp),%eax
9: 89 04 24 mov %eax,(%esp)
c: e8 fc ff ff ff call d <Foo::Foo()+0xd>
11: c9 leave
12: c3 ret
Disassembly of section .comment:
00000000 <.comment>:
0: 00 47 43 add %al,0x43(%edi)
3: 43 inc %ebx
4: 3a 20 cmp (%eax),%ah
6: 28 55 62 sub %dl,0x62(%ebp)
9: 75 6e jne 79 <main+0x74>
b: 74 75 je 82 <main+0x7d>
d: 2f das
e: 4c dec %esp
f: 69 6e 61 72 6f 20 34 imul $0x34206f72,0x61(%esi),%ebp
16: 2e cs
17: 35 2e 32 2d 38 xor $0x382d322e,%eax
1c: 75 62 jne 80 <main+0x7b>
1e: 75 6e jne 8e <main+0x89>
20: 74 75 je 97 <main+0x92>
22: 34 29 xor $0x29,%al
24: 20 34 2e and %dh,(%esi,%ebp,1)
27: 35 .byte 0x35
28: 2e 32 00 xor %cs:(%eax),%al
Disassembly of section .eh_frame:
00000000 <.eh_frame>:
0: 14 00 adc $0x0,%al
2: 00 00 add %al,(%eax)
4: 00 00 add %al,(%eax)
6: 00 00 add %al,(%eax)
8: 01 7a 52 add %edi,0x52(%edx)
b: 00 01 add %al,(%ecx)
d: 7c 08 jl 17 <.eh_frame+0x17>
f: 01 1b add %ebx,(%ebx)
11: 0c 04 or $0x4,%al
13: 04 88 add $0x88,%al
15: 01 00 add %eax,(%eax)
17: 00 1c 00 add %bl,(%eax,%eax,1)
1a: 00 00 add %al,(%eax)
1c: 1c 00 sbb $0x0,%al
1e: 00 00 add %al,(%eax)
20: 00 00 add %al,(%eax)
22: 00 00 add %al,(%eax)
24: 05 00 00 00 00 add $0x0,%eax
29: 41 inc %ecx
2a: 0e push %cs
2b: 08 42 85 or %al,-0x7b(%edx)
2e: 02 0d 05 41 c5 0c add 0xcc54105,%cl
34: 04 04 add $0x4,%al
36: 00 00 add %al,(%eax)
38: 1c 00 sbb $0x0,%al
3a: 00 00 add %al,(%eax)
3c: 3c 00 cmp $0x0,%al
3e: 00 00 add %al,(%eax)
40: 00 00 add %al,(%eax)
42: 00 00 add %al,(%eax)
44: 13 00 adc (%eax),%eax
46: 00 00 add %al,(%eax)
48: 00 41 0e add %al,0xe(%ecx)
4b: 08 42 85 or %al,-0x7b(%edx)
4e: 02 0d 05 4f c5 0c add 0xcc54f05,%cl
54: 04 04 add $0x4,%al
56: 00 00 add %al,(%eax)
58: 1c 00 sbb $0x0,%al
5a: 00 00 add %al,(%eax)
5c: 5c pop %esp
5d: 00 00 add %al,(%eax)
5f: 00 05 00 00 00 1c add %al,0x1c000000
65: 00 00 add %al,(%eax)
67: 00 00 add %al,(%eax)
69: 41 inc %ecx
6a: 0e push %cs
6b: 08 42 85 or %al,-0x7b(%edx)
6e: 02 0d 05 58 c5 0c add 0xcc55805,%cl
74: 04 04 add $0x4,%al
...
//反汇编代码段和解析一部分symbol为正常c语言
objdump -dC test.o
test.o: file format elf32-i386
Disassembly of section .text:
00000000 <Base::Base()>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 5d pop %ebp
4: c3 ret
00000005 <main>:
5: 55 push %ebp
6: 89 e5 mov %esp,%ebp
8: 83 e4 f0 and $0xfffffff0,%esp
b: 83 ec 20 sub $0x20,%esp
e: 8d 44 24 14 lea 0x14(%esp),%eax
12: 89 04 24 mov %eax,(%esp)
15: e8 fc ff ff ff call 16 <main+0x11>
1a: b8 00 00 00 00 mov $0x0,%eax
1f: c9 leave
20: c3 ret
Disassembly of section .text._ZN3FooC2Ev:
00000000 <Foo::Foo()>:
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 83 ec 04 sub $0x4,%esp
6: 8b 45 08 mov 0x8(%ebp),%eax
9: 89 04 24 mov %eax,(%esp)
c: e8 fc ff ff ff call d <Foo::Foo()+0xd>
11: c9 leave
12: c3 ret

0 0
原创粉丝点击