【发布时间】:2026-01-21 13:00:02
【问题描述】:
查看this post,它描述了一种将可执行代码放入 DICOM 文件的前 128 个字节(即前导部分)的技术。这样 DICOM 就可以被视为 DICOM 和 PE 可执行文件。
This git repo 也证明了这一点。但是它们不显示代码,而只有二进制文件。
现在我的问题。一个可执行文件怎么能只保存在 128 字节,因为我知道最小的 exe 将占用来自this、this 和this SO 帖子的至少几个 KB?
【问题讨论】:
-
AFAIK 在 64 位之前的 Windows 上最小的可执行文件是两个字节(基本上只是
INT 20h),尽管您不能将它添加到任何大于 64k 的文件中。正如您的第二个链接所示,最小的 PE 可执行文件似乎是 97 字节。最后,通过浏览文章,您不需要将可执行文件放入 128 字节;您只需要将 PE header 放入 128 个字节。这么小的可执行文件总是用汇编语言手工制作的,所以这个问题肯定不是language-agnostic。 -
@Amadan '您只需要将 PE 标头放入 128 个字节' - 那么可执行文件的其余部分在哪里,我们如何告诉跳转到那个位置?
-
再次声明,不是专家,也没有完整阅读文章;但是可能没有理由不能在图像数据之后隐藏其他代码(除非图像格式对文件结尾敏感);甚至在图像数据中,作为隐写码。你怎么跳过去?我希望你以同样的方式跳转到程序集的任何其他地方(鉴于 128 字节的 PE 标头已经可以具有可执行代码)。
标签: windows language-agnostic executable portable-executable