如何转储可执行文件的所有函数名?

时间:2016-03-17 15:00:40

标签: windows reverse-engineering windbg portable-executable

是否有办法(最好是命令行)转储可执行文件的所有函数名称(不仅仅是导出/导入)?

有问题的可执行文件是Microsoft EXE / DLL,因此应该可以从Microsoft Symbol Server获取符号。

2 个答案:

答案 0 :(得分:3)

请注意,微软决定要发布多少个符号。仅仅因为有符号服务器并不意味着你得到私人符号。

您可以在WinDbg中执行此操作:

  1. 打开崩溃转储...(未打开可执行文件)
  2. 选择DLL /可执行文件
  3. .symfix
  4. .reload
  5. x *!*
  6. 您可以使用cdb从命令行执行此操作:

    cdb -z "c:\windows\system32\notepad.exe" -c ".symfix;.reload;x *!*;q"
    

答案 1 :(得分:2)

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>)