如何转储可执行文件的所有函数名称?
How to dump all function names of an executable?
有没有办法(最好是命令行)转储可执行文件的所有函数名称(而不仅仅是 exports/imports)?
有问题的可执行文件是 Microsoft EXE/DLL,因此应该可以从 Microsoft Symbol Server 获取符号。
x calc!* 应该转储函数。 calculator.exe
的类型和全局变量
0:000> x calc!*
00bd6b7a calc!std::locale::locale (<no parameter info>)
00bc1138 calc!_imp__NtQueryLicenseValue = <no type information>
00bf308b calc!CToolsetDialog::`scalar deleting destructor' (<no parameter info>)
00bc6479 calc!CContainer::IsFocusOnMainDisplayAllowed (<no parameter info>)
00be29b3 calc!CContainer::ToggleHistoryFunc (<no parameter info>)
00bcb3bb calc!DigitGroupingStringToGroupingNum (<no parameter info>)
00bf2235 calc!RecoveryCallback::IsNextPingRequired (<no parameter info>)
00bd23f8 calc!_Mtxlock (<no parameter info>)
00bc11e8 calc!_imp__InterlockedIncrement = <no type information>
00bc13b4 calc!_imp__DestroyWindow = <no type information>
00c08593 calc!exception::exception (<no parameter info>)
00c03c90 calc!std::operator<<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > (<no parameter info>)
请注意,要发布多少个符号由 Microsoft 决定。仅仅因为有符号服务器并不意味着您可以获得私有符号。
您可以在 WinDbg 中完成:
- 打开故障转储...(未打开可执行文件)
- Select DLL/Executable
.symfix
.reload
x *!*
您可以使用 cdb
从命令行执行此操作:
cdb -z "c:\windows\system32\notepad.exe" -c ".symfix;.reload;x *!*;q"
有没有办法(最好是命令行)转储可执行文件的所有函数名称(而不仅仅是 exports/imports)?
有问题的可执行文件是 Microsoft EXE/DLL,因此应该可以从 Microsoft Symbol Server 获取符号。
x calc!* 应该转储函数。 calculator.exe
的类型和全局变量0:000> x calc!*
00bd6b7a calc!std::locale::locale (<no parameter info>)
00bc1138 calc!_imp__NtQueryLicenseValue = <no type information>
00bf308b calc!CToolsetDialog::`scalar deleting destructor' (<no parameter info>)
00bc6479 calc!CContainer::IsFocusOnMainDisplayAllowed (<no parameter info>)
00be29b3 calc!CContainer::ToggleHistoryFunc (<no parameter info>)
00bcb3bb calc!DigitGroupingStringToGroupingNum (<no parameter info>)
00bf2235 calc!RecoveryCallback::IsNextPingRequired (<no parameter info>)
00bd23f8 calc!_Mtxlock (<no parameter info>)
00bc11e8 calc!_imp__InterlockedIncrement = <no type information>
00bc13b4 calc!_imp__DestroyWindow = <no type information>
00c08593 calc!exception::exception (<no parameter info>)
00c03c90 calc!std::operator<<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > (<no parameter info>)
请注意,要发布多少个符号由 Microsoft 决定。仅仅因为有符号服务器并不意味着您可以获得私有符号。
您可以在 WinDbg 中完成:
- 打开故障转储...(未打开可执行文件)
- Select DLL/Executable
.symfix
.reload
x *!*
您可以使用 cdb
从命令行执行此操作:
cdb -z "c:\windows\system32\notepad.exe" -c ".symfix;.reload;x *!*;q"