windows 可执行文件中的函数符号
Function symbols in windows executeable
我想获取一个包含可执行文件的所有函数的损坏名称的列表,以供某些外部分析。
在 Linux 这是一个简单的任务。我只需要像往常一样编译,运行 nm
就可以得到一个包含损坏名称的列表。
$ nm test
U _GLOBAL_OFFSET_TABLE_
U printf
U __stack_chk_fail
0000000000000012 T _Z3fooi
0000000000000000 T _Z3foov
0000000000000007 T _Z4footv
0000000000000000 W _ZN3BarC1Ev
0000000000000000 W _ZN3BarC2Ev
0000000000000000 n _ZN3BarC5Ev
在 windows 和 Microsoft 的 Visual C++(msvc?)上,我想不出一种以相同方式获取信息的方法。
我尝试使用 cl /Od /DEBUG
和 运行 dumpbin /EXPORTS /HEADERS
编译我的应用程序,但我没有得到我的应用程序的损坏函数名称的列表。
dumpbin /EXPORTS test.exe
Microsoft (R) COFF/PE Dumper Version 14.00.24245.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file test.exe
File Type: EXECUTABLE IMAGE
Summary
2000 .data
1000 .gfids
1000 .pdata
9000 .rdata
1000 .reloc
C000 .text
Type a message
dumpbin
是否仅适用于共享库而不适用于可执行文件?
由于我只需要所有损坏的名称(例如 _Z3foov、_ZN3BarC1Ev)而不更改我的应用程序代码,是否有更好的解决方案来获取此字符串?
我通常在 linux 上开发 C++ 应用程序。因此我不太了解 windows 具体情况。
在 Visual Studio 中,您正在寻找 "MAP file"。链接器选项是 /MAP
,它位于 Visual Studio 中的 "Debugging" 属性下。这是作为构建的一部分生成的,而不是之后生成的。输出是一个类似于 nm
输出的简单文本文件。
我想获取一个包含可执行文件的所有函数的损坏名称的列表,以供某些外部分析。
在 Linux 这是一个简单的任务。我只需要像往常一样编译,运行 nm
就可以得到一个包含损坏名称的列表。
$ nm test
U _GLOBAL_OFFSET_TABLE_
U printf
U __stack_chk_fail
0000000000000012 T _Z3fooi
0000000000000000 T _Z3foov
0000000000000007 T _Z4footv
0000000000000000 W _ZN3BarC1Ev
0000000000000000 W _ZN3BarC2Ev
0000000000000000 n _ZN3BarC5Ev
在 windows 和 Microsoft 的 Visual C++(msvc?)上,我想不出一种以相同方式获取信息的方法。
我尝试使用 cl /Od /DEBUG
和 运行 dumpbin /EXPORTS /HEADERS
编译我的应用程序,但我没有得到我的应用程序的损坏函数名称的列表。
dumpbin /EXPORTS test.exe
Microsoft (R) COFF/PE Dumper Version 14.00.24245.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file test.exe
File Type: EXECUTABLE IMAGE
Summary
2000 .data
1000 .gfids
1000 .pdata
9000 .rdata
1000 .reloc
C000 .text
Type a message
dumpbin
是否仅适用于共享库而不适用于可执行文件?
由于我只需要所有损坏的名称(例如 _Z3foov、_ZN3BarC1Ev)而不更改我的应用程序代码,是否有更好的解决方案来获取此字符串?
我通常在 linux 上开发 C++ 应用程序。因此我不太了解 windows 具体情况。
在 Visual Studio 中,您正在寻找 "MAP file"。链接器选项是 /MAP
,它位于 Visual Studio 中的 "Debugging" 属性下。这是作为构建的一部分生成的,而不是之后生成的。输出是一个类似于 nm
输出的简单文本文件。