Compilers generate “character” files, providing debuggers with a way to display the character name corresponding to a specific address or offset. This is highly system dependent: for example, the VS toolchain on Windows places these symbols in separate .pdb files, while on some UNIX variants these debug symbols are embedded in the executable. EDIT:. According to the comments, OllyDbg pulls characters from the import address table embedded in the executables.
When characters are embedded in an executable, compiler vendors provide a tool to remove these characters. For example, GNU provides the strip
utility to work with their toolchain.
source share