Objdump Command - Analyze Object Files | Online Free DevTools by Hexmos

Analyze object files with the objdump command. View headers, sections, symbols, and disassembly. A powerful tool for developers to inspect executables.

Objdump Command - Object File Analysis

Understanding the Objdump Tool

The objdump command is a powerful utility for analyzing object files. It provides detailed information about the structure and contents of executables, object code, and libraries. Developers frequently use objdump for debugging, reverse engineering, and understanding how their compiled code is represented at a low level. This tool is essential for anyone working with compiled languages like C, C++, or assembly.

Key Objdump Options for File Inspection

objdump offers a wide array of options to inspect different aspects of an object file. Below are some of the most commonly used commands for examining various file components.

Displaying File Headers

To view the overall file header information, use the -f option. For more specific, object-format-dependent header details, the -p option is useful.

# Display the contents of the overall file header
objdump -f executable

# Display object format specific file header contents
objdump -p executable

Examining Section Headers and Contents

The -h option displays the contents of the section headers, giving an overview of the different segments within the file. To see the assembler contents of executable sections, use -d. For all sections, including non-executable ones, use -D. If you need to see the full contents of all sections in hexadecimal and ASCII, the -s option is invaluable.

# Display the contents of the section headers
objdump -h executable

# Display assembler contents of executable sections
objdump -d executable

# Display assembler contents of all sections
objdump -D executable

# Display the full contents of all sections
objdump -s executable

Symbol Table and Dynamic Information

objdump can display the symbol table (-t) and the dynamic symbol table (-T), which contains symbols resolved at runtime. Relocation entries, crucial for linking, can be viewed with -R.

# Display the contents of symbol table (or tables)
objdump -t executable

# Display the contents of dynamic symbol table
# Dynamic symbols are those which are resolved during run time
objdump -T executable

# Display the dynamic relocation entries in the file
objdump -R executable

Advanced Usage and Options

You can combine options for more targeted analysis. For instance, to display only the contents of a specific section like .rodata, you can use -s -j.rodata. The --prefix-addresses option can be used with -D for a clearer disassembly format.

# Display section of interest
# (extremely useful when you know the section related
# to which the information is required)
objdump -s -j.rodata executable

# Use the older disassembly format
objdump -D --prefix-addresses executable

# Execute the objdump by calling the options.txt file
objdump @options.txt

Further Resources

For more in-depth understanding and advanced usage of the objdump command, refer to the official GNU Binutils documentation.