是否可以读取 .exe 文件? [关闭]

Posted

技术标签:

【中文标题】是否可以读取 .exe 文件? [关闭]【英文标题】:is it possible to read .exe file? [closed] 【发布时间】:2013-05-03 09:09:39 【问题描述】:

我想做一个识别恶意软件的项目。 那么是否可以读取 .exe 文件来查找恶意部分?如果是的话怎么做。

【问题讨论】:

"是否可以逐行读取 .exe 文件" EXE 不是文本,所以根本没有意义。 1) en.wikipedia.org/wiki/Antivirus_software#Identification_methods 2) 读取 != 执行,所以是的(但程序中的一行是什么?) 3) 编写程序来识别恶意软件将非常困难。这不简单。这是一项价值数百万美元的业务,期间。另一方面,像virustotal.com/en 这样的很棒的网站会从您那里获取一个文件,针对主要的防病毒程序运行它并询问他们是否认为这是一种病毒 - 如果您不必检查很多文件,这是一个很好的解决方案。 ***是你的朋友:en.wikipedia.org/wiki/Portable_Executable(也有指向 PE 规范的指针) 感谢您的回答。我的概念不清楚 .exe 文件的工作原理。我的意思是如何在 .exe 文件中查找恶意部分。答案很有帮助。非常感谢。 【参考方案1】:

直到一个 exe 运行它只是一个二进制文件,所以是的,你可以阅读它。但是二进制文件没有行,它只是一个恒定的流。

大多数病毒检查程序都使用某种形式的模式识别,他们在文件中寻找字节模式,可能是指令或消息。如果您找到足够多的这些来匹配已知病毒,那么您将该文件标记为有问题。

【讨论】:

【参考方案2】:

您必须将 .EXE 文件作为二进制文件读取,并且您不必执行它来读取内部文件

【讨论】:

【参考方案3】:

是否可以在不执行的情况下读取.exe

是的,当然。

是否可以逐行读取.exe文件

理论上是可以的。但我怀疑这就是你想要的。

您应该以字节块的形式读取二进制文件(即 exe)。

【讨论】:

【参考方案4】:

读取可执行文件不会执行它。此外,可执行文件是二进制数据流,因此它可能不包含换行符。因此,逐行阅读是没有意义的。您需要逐字节读取。

【讨论】:

【参考方案5】:

我不确定你所说的逐行阅读是什么意思,你的意思是阅读实际代码。如果是这样,那么不完全是。但是,您可以使用hexdumpgdb 等工具阅读编译后的代码

hexdump 将允许您查看文件的实际二进制文件。您可以使用多种格式。鉴于 hexdump,您可以读取二进制文件并设计一个程序来解决内部工作并确定问题。

gdb 允许您以更易读的格式查看程序的框架。但是,要使 gdb 正常工作,必须使用调试标志编译程序。

然而,还有另一个名为strace 的程序。这显示了程序对内核的所有调用。但是,这将执行程序。也许在沙盒中运行可能会有所帮助。

我提到的工具已经是编译好的程序,可以让你做你想做的事情。但是您可以逐字节读取文件并确定您的程序认为什么是恶意的。

希望对你有帮助

【讨论】:

谢谢。我试过 hexdump 它会很有帮助,因为它允许查看文本文件或任何其他格式的文件的实际二进制文件。【参考方案6】:

不,你不能逐行读取exe文件,因为它是一个二进制文件,里面没有行。

【讨论】:

以上是关于是否可以读取 .exe 文件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 API 窗口反汇编 exe 文件? [关闭]

读取 EXE 或 DLL 的清单而不加载它

是否有任何 .NET Core 兼容库用于读取 Excel 电子表格文件? [关闭]

mfc 中如何打开 关闭一个exe文件

mfc 中如何打开 关闭一个exe文件

在C中读取命令行参数[关闭]