0

我想在 DLL 中列出所有导出的函数并转储它们的字节。dumpbin使用其中一个或rabin2radare2包中列出所有导出非常简单。我还找到了一种反汇编整个 DLLdumpbin的方法,但无法在转储中查看函数边界。

我正在寻找一种方法来反汇编(使用字节),或者理想情况下只是为 DLL 中的特定或所有函数转储字节。如果其中包含其他信息,我不介意解析输出。我已经尝试了所有工具的孩子,但到目前为止我无法实现我所需要的。

可能的方向之一是编写脚本radare2来做到这一点。

4

1 回答 1

2

为了转储函数的字节,您必须知道该函数在哪里结束。
您可以进行一些可能有效的静态分析,或者您可以执行以下操作之一:

对于 64 位可执行文件,您可以解析包含RUNTIME_FUNCTION列表的.pdata部分。DUMPBIN可以使用or选项来做到这一点。 请注意,这可能不包括每个导出的函数,请参阅参考资料。/unwindinfo/pdata

第二种适用于 32 位和 64 位可执行文件的选项是使用DIA SDK
(请参阅IDiaSymbol::get_length)。这应该涵盖所有导出和未导出的函数,但需要您有权访问可执行文件的.pdb文件。

于 2021-03-18T00:37:45.040 回答