Join our Newsletter — 33% off our NHI Course

String Table

A string table is a companion ELF structure that stores null terminated names used by symbols and other metadata entries. Each symbol entry points into the string table by index, which lets tools recover readable names for code and data objects.

String Table Basics

A string table is a companion ELF structure that holds null terminated names for symbols and related metadata. It lets the binary store names once, then reference them by offset from each symbol entry.

That design keeps symbol records compact while still allowing debuggers, linkers, loaders, and analysis tools to recover readable labels for functions, objects, sections, and imported references. In practice, the string table is one of the small but essential data structures that make ELF metadata usable to humans and tooling.

How the String Table Fits Into ELF Metadata

In ELF, symbol entries do not usually embed the full text of a name. Instead, each entry carries an index into the string table, and that index resolves to the first byte of a null terminated string. The same pattern can also support other metadata that needs names without repeating them across the file.

This separation matters because symbol tables can be dense. Reusing a shared string pool reduces duplication, makes relocation and symbol resolution simpler, and keeps file layout more efficient. It also means that if the offset is wrong, the resulting name can be missing, truncated, or misread by analysis tools.

Why the String Table Matters for Tooling and Analysis

The string table is what turns otherwise opaque symbol metadata into something understandable. Disassemblers, debuggers, linkers, and post-exploitation analysis tools rely on it to map raw offsets back to readable identifiers, which helps explain program behavior and locate functions or data objects.

Because the names are stored separately from the symbol records, tooling can still parse the file structure even when names are absent, stripped, or partially removed. When names are present, they provide critical context for reverse engineering, patching, and incident response workflows that depend on accurate binary interpretation.

Common Failure Modes and Practical Implications

String tables are straightforward in concept, but mistakes in offsets, malformed termination, or corrupted ELF metadata can make symbol names disappear or point to the wrong string. That can mislead debugging, obscure code paths, or cause analysis tools to present incomplete results.

Stripped binaries often remove most or all useful names, which does not break execution but does reduce visibility. For defenders and reverse engineers, that means the string table is not just a formatting detail, it is part of the metadata that determines how much of the binary can be interpreted quickly and accurately.