在Linux系統中,反匯編指令通常使用objdump
或readelf
等工具來查看二進制文件的符號表。符號表包含了程序中定義和引用的所有符號(如函數、變量等)的信息。以下是如何使用這些工具解析符號表的步驟:
objdump
基本命令:
objdump -t <binary_file>
這個命令會顯示二進制文件中的符號表。
詳細信息:
如果你想看到更詳細的信息,可以使用-s
選項:
objdump -ts <binary_file>
過濾特定符號:
你可以使用grep
來過濾特定的符號:
objdump -t <binary_file> | grep <symbol_name>
查看符號的地址和大小:
默認情況下,objdump -t
會顯示符號的地址、大小和類型。例如:
0000000000401136 g F .text 000000000000000a main
readelf
基本命令:
readelf -s <binary_file>
這個命令會顯示ELF文件中的符號表。
詳細信息:
如果你想看到更詳細的信息,可以使用-W
選項(等同于--all
):
readelf -Ws <binary_file>
過濾特定符號:
你可以使用grep
來過濾特定的符號:
readelf -s <binary_file> | grep <symbol_name>
查看符號的地址、大小和類型:
默認情況下,readelf -s
會顯示符號的編號、值(地址)、大小、類型和綁定等信息。例如:
Num: Value Size Type Bind Vis Ndx Name
1: 0000000000401136 10 FUNC GLOBAL DEFAULT 1 main
符號類型:
FUNC
:函數DATA
:數據OBJT
:對象NOTYPE
:未定義類型綁定:
LOCAL
:局部符號GLOBAL
:全局符號WEAK
:弱符號可見性:
DEFAULT
:默認可見性HIDDEN
:隱藏符號PROTECTED
:受保護符號通過這些工具和選項,你可以詳細解析Linux二進制文件中的符號表,了解程序中定義和引用的符號信息。