我正在写一些分析PE文件内部字符串的代码(Python,但实际上并不重要)。我正在寻找一个我可以调用的命令行工具,它将返回PE文件内的完整字符串列表。从PE文件中提取字符串
我知道PEDUMP,但它似乎给不完整的字符串。
此外,这个工具将能够与不同类型的字符串,如C-字符串(NULL终止),帕斯卡 - 串(长度前缀)等
我发现的处理是非常重要的“字符串提取器”here,但它花钱,我不确定它是否可以处理不同类型的字符串。
你知道任何工具可以满足我的要求吗?
我正在写一些分析PE文件内部字符串的代码(Python,但实际上并不重要)。我正在寻找一个我可以调用的命令行工具,它将返回PE文件内的完整字符串列表。从PE文件中提取字符串
我知道PEDUMP,但它似乎给不完整的字符串。
此外,这个工具将能够与不同类型的字符串,如C-字符串(NULL终止),帕斯卡 - 串(长度前缀)等
我发现的处理是非常重要的“字符串提取器”here,但它花钱,我不确定它是否可以处理不同类型的字符串。
你知道任何工具可以满足我的要求吗?
有经典的unix程序strings
这正是这个。
尽管strings
不是专门设计用于处理Pascal风格的字符串,它仍然会将它们转储出去,因为它们似乎是文本数据。
strings
的一些实现也可以处理Unicode(UTF-8和UTF-16)字符串。谢谢 -
http://pedump.me可以从PE
首先显示的所有字符串。第二,我一直试图在notepad.exe上使用cygwin的“字符串”,并看到它也提供了不相关的信息(如导入和gibbrish)。你知道另一种选择或Windows的“字符串”版本哪个更好? – Moshe 2009-08-19 14:27:21
'strings'程序不知道什么是和你不相关的,所以它将所有看起来可能是字符串的东西都抛出。这将包括进口和其他许多事情。如果你只需要所有可能字符串的一个子集,那么你可能需要另一个工具,但是你必须解释什么是和你不相关的。 – 2009-08-19 20:56:06
我明白为什么这不像我希望的那么简单。例如,当运行“strings -e l notepad.exe”时,我得到了更好的结果,因为内部的字符串是Unicode。我不能确定每个PE都会如此。 – Moshe 2009-08-20 08:01:29