To resolve function names you need symbol information and symbol information is kept in pdb file if you do not have pdb file then it is definitely a very very hard task until you learn a few tricks / memorize a few patterns / understand few gotchas
windbg knows nothing about symbols if you have the symbol file do .reload /f depending on the psb type(private pdb / public pdb) and compilation type (release / debug ) windbg will resolve public names and or private locals
if you do not have symbol information you may need piece it together
messagebox without symbol info
0:000> u 401000
image00400000+0x1000:
00401000 6a00 push 0
00401002 6800304000 push offset image00400000+0x3000 (00403000)
00401007 6819304000 push offset image00400000+0x3019 (00403019)
0040100c 6a00 push 0
0040100e e807000000 call image00400000+0x101a (0040101a)
00401013 6a00 push 0
00401015 e806000000 call image00400000+0x1020 (00401020)
0040101a ff2508204000 jmp dword ptr [image00400000+0x2008 (00402008)]
based on disassembly you may need to look for the right information
or simply view the hex i know MessageBoxA takes two ascii strings so i print them with %ma
to know what is pointed by the call (jmp [402008] i print the symbol information of the call (i know microsoft provides public symbols for its core dlls i know user32.dll is a microsoft dll and i know i have the symbols (pdb file for this user32.dll)
0:000> .printf "%ma\n%ma\n%y\n" , 403000, 403019,poi(402008)
Iczelion's tutorial no.2
Win32 Assembly is Great!
user32!MessageBoxA (7e4507ea)
now the same application with symbols
see windbg properly resolving function names when symbol info is available in disassembly
0:000> u 401000
dbgmsgbox!start [dbgmsgbox.asm @ 17]:
00401000 6a00 push 0
00401002 6800304000 push offset dbgmsgbox!MsgCaption (00403000)
00401007 6819304000 push offset dbgmsgbox!MsgBoxText (00403019)
0040100c 6a00 push 0
0040100e e807000000 call dbgmsgbox!MessageBoxA (0040101a)
00401013 6a00 push 0
00401015 e806000000 call dbgmsgbox!ExitProcess (00401020)
dbgmsgbox!MessageBoxA:
0040101a ff2508204000 jmp dword ptr [dbgmsgbox!_imp__MessageBoxA (00402008)]
the information printed out earlier by printf hack is now available with pertinent type information
0:000> ?? (char *) @@((403000))
char * 0x00403000
"Iczelion's tutorial no.2"
0:000> ?? (char *) @@((403019))
char * 0x00403019
"Win32 Assembly is Great!"
0:000> ln poi(402008)
(7e4507ea) user32!MessageBoxA | (7e450838) user32!MessageBoxExW
Exact matches:
user32!MessageBoxA = <no type information>