Take for example, 'kernel32.dll', the export table already provides the list of exported functions, then in what use case, would I need to download the debugging symbols for it from the MS symbol server?

2 Answers 2


Most available public symbol files provide only global function and variable names (both exported and non-exported ones). A small minority (e.g. ntdll, kernel32, ntoskrnl) also include various system types (structures , enumerations) which is very useful for low level debugging. But even without types you can often guess a lot just from the function names.


without symbols most of the calls would be like call dword ptr ds :[12345678] or call 45678976 or jmp 86753535 etc

with symbols it would be like call dword ptr ds:[exitprocess]

call foo32!blah

jmp some-non-exported-address-that-was-named-by-symbol etc

apart from names symbols provide typeinfo

like push foo->blah

instead of push [eax+60]

also exported apis can be ordinal exports then all calls will look like call ord1 call ord2 call ordn
without a symbol file you will have a hard time renaming and analyzing them
take a look at mfcxx.dll

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.