在命令行上从本机 .DLL 转储函数字节
Dump function bytes from a native .DLL on command line
我想列出 DLL 中的所有导出函数并转储它们的字节。使用 radare2
包中的 dumpbin
或 rabin2
列出所有导出是非常简单的。我还找到了一种使用 dumpbin
反汇编整个 DLL 的方法,但是无法在转储中查看函数边界。
我正在寻找一种反汇编(使用字节)的方法,或者理想情况下只是为 DLL 中的特定或所有函数转储字节。如果其中包含一些其他信息,我不介意解析输出。我已经尝试了所有工具的孩子,但到目前为止我无法实现我所需要的。
可能的方向之一是编写脚本 radare2
来做到这一点。
为了转储函数的字节,您必须知道该函数的结束位置。
您可以进行一些可能有效的静态分析,或者您可以执行以下操作之一:
对于 64 位可执行文件,您可以解析包含 RUNTIME_FUNCTIONs. DUMPBIN 列表的 .pdata 部分,可以使用 /unwindinfo
或/pdata
选项。
请注意,这可能不包括每个导出的函数,请参阅参考资料。
第二个选项,适用于 32 位和 64 位可执行文件,是利用 DIA SDK
(参见 IDiaSymbol::get_length)。这应该涵盖所有导出和未导出的函数,但需要您有权访问可执行文件的 .pdb 文件。
我想列出 DLL 中的所有导出函数并转储它们的字节。使用 radare2
包中的 dumpbin
或 rabin2
列出所有导出是非常简单的。我还找到了一种使用 dumpbin
反汇编整个 DLL 的方法,但是无法在转储中查看函数边界。
我正在寻找一种反汇编(使用字节)的方法,或者理想情况下只是为 DLL 中的特定或所有函数转储字节。如果其中包含一些其他信息,我不介意解析输出。我已经尝试了所有工具的孩子,但到目前为止我无法实现我所需要的。
可能的方向之一是编写脚本 radare2
来做到这一点。
为了转储函数的字节,您必须知道该函数的结束位置。
您可以进行一些可能有效的静态分析,或者您可以执行以下操作之一:
对于 64 位可执行文件,您可以解析包含 RUNTIME_FUNCTIONs. DUMPBIN 列表的 .pdata 部分,可以使用 /unwindinfo
或/pdata
选项。
请注意,这可能不包括每个导出的函数,请参阅参考资料。
第二个选项,适用于 32 位和 64 位可执行文件,是利用 DIA SDK
(参见 IDiaSymbol::get_length)。这应该涵盖所有导出和未导出的函数,但需要您有权访问可执行文件的 .pdb 文件。