【发布时间】:2019-08-20 02:14:26
【问题描述】:
为什么剥离的二进制显示 _cxa_finalize 而不是 libc_start_main?
我正在尝试在 Linux (Ubuntu) 上的一个非常简单的 C 程序中定位和反汇编 main()。二进制文件被剥离。您可以在下面看到相同说明的反汇编(未剥离)与反汇编(剥离)。
问题:剥离版本中的_cxa_finalize 是什么?为什么libc_start_main被_cxa_finalize代替了?
未剥离:
106d: 48 8d 3d c1 00 00 00 lea rdi,[rip+0xc1] # 1135 <main>
1074: ff 15 66 2f 00 00 call QWORD PTR [rip+0x2f66] # 3fe0 <__libc_start_main@GLIBC_2.2.5>
剥离:
106d: 48 8d 3d c1 00 00 00 lea rdi,[rip+0xc1] # 1135 <__cxa_finalize@plt+0xf5>
1074: ff 15 66 2f 00 00 call QWORD PTR [rip+0x2f66] # 3fe0 <__cxa_finalize@plt+0x2fa0>
【问题讨论】:
标签: c gdb disassembly strip objdump