You are not looking at functions that you can't reach, but at unassigned variables.
As you said, you are looking at the .bss section. From Wikipedia, the .bss section is
the portion of an object file, executable, or assembly language code that contains statically-allocated variables that are declared but have not been assigned a value yet.
IDA is showing you this with the dd
opcode. As @blabb point out, this is an uninitialized dword
, which mean a dword that was not assigned yet. Exactly what is supposed to be in the .bss section !
Theses variables don't have any hardcoded default values, so they are placed in this section of the binary, waiting to be populated at runtime with dynamic values.
What you can do is to write down the address of the variable that you want to find more about, open up a debugger, let it run a bit (or you can break on a specific function if you know where this variable is being populated), and check the content of this variable by looking at the previously written memory address.
You'll know what type of data is supposed to be inside this variable !
Don't forget to deactivate the ASLR while running the binary (otherwise the address that you saw in IDA would not match naything), or if needed, to rebase your program in IDA.
dd
? I know it only from WinDBG as a command. Or you meantds
, data segment? Is there a way to search in this?