可执行文件如何在文件大小这么小?

时间:2016-07-05 09:24:15

标签: windows portable-executable malware

我一直在Metasploit上生成有效负载,我一直在尝试使用不同的模板,其中一个模板可以让您的有效负载exe-small。我一直在生成的有效负载类型是windows / meterpreter / reverse_tcp,只是使用普通exe模板,它的文件大小约为72 KB,但exe-small输出的大小为2.4kb。为什么是这样?我怎么能将它应用到我的编程中?

3 个答案:

答案 0 :(得分:4)

最小的PE文件只有97个字节 - 它什么都不做(只返回)。

今天最小的可运行可执行文件是133个字节,因为Windows需要加载kernel32。无法执行没有导入的PE文件。

在该大小下,它可以通过在导入表中指定UNC路径来从Internet下载有效负载。

要实现这么小的可执行文件,你必须

  • 在汇编程序中实现,主要是为了摆脱C运行时
  • 减少默认情况下为1024的文件对齐
  • 删除打印消息的DOS存根"此程序无法在DOS模式下运行"
  • 将部分PE部分合并到MZ标题
  • 删除数据目录

更详细的研究blog post called TinyPE中提供了完整的说明。

答案 1 :(得分:0)

对于EXE这个小,通常用于图标的空间最大。通常情况下,图标包含各种尺寸和颜色方案,如果您不在乎有一个旧的,生锈的"图标,或根本没有图标。

当您签署EXE时,还会使用大约4k的空间。

作为小型EXE的示例,请never10查看grc。有一个详细信息页面突出了以上几点:

https://www.grc.com/never10/details.htm

在最后一段:

  

最后一点:我有点恼火,“Never10”和它一样大   85千字节。数字签名可以增加应用程序的大小   4k,但微软现在的高分辨率和高色图标   需要占用56k!所以没有那么烦人的开销,应用程序   将是一个可敬的25k。是的,当然我写的是   汇编语言。

免责声明:我不以任何方式与grc有任何关系。

答案 2 :(得分:-1)

对可执行文件的要求很小,除非它包含我称之为代码垃圾邮件的代码,代码对程序/ exe的功能实际上并不重要。这对其他文件也有效。与FrontPage中编写的HTML页面相比,查看手动编写的HTML页面。那是垃圾邮件。

我记得我的旧DOS文件大小都是KB,并且几乎可以在操作系统中执行任何所需的任务。我的一个.exes(实际上是.com)的大小只有20个字节。

只需按照这种方式考虑:正如在某些情况下,Windows操作系统中包含的大多数文件都可以删除,操作系统仍可以完美运行,与.exe文件相同:大部分代码要么无用,要么与目标相关或有意添加(见下文)。

此异常的高峰是现在在一些使用高级复制保护的游戏的.exe文件中添加的代码,这可以使文件大到几十MB。运行游戏所需的实际代码几乎不到完整代码的10%。

在您的示例中,文件大小为72 KB,对于Windows操作系统来说几乎可以做任何事情。

要将它应用于您的编程,就像制作非常小的.exes一样,保持简单。不要仅为其外观添加不必要的代码,或者认为您将在某一时刻使用该部分程序/代码。