【问题标题】:Execute EXE as JPG以JPG格式执行EXE
【发布时间】:2015-10-29 13:42:12
【问题描述】:

根据thisthis 指南,我在Visual Basic 中制作了一个简单的程序,然后将其扩展名为JPG,并将其设置为使用命令行cmd.exe /c my_program.jpg 从快捷方式运行。

到目前为止一切都很好,但我想在不打开命令提示符的情况下从图像运行我的程序。

我知道这是可能的,因为我可以从 PDF、RTF 或 Word 文档运行程序,因为大多数 PDF 文件都具有 JS API 功能,而 Microsoft Office 文档具有 VBA 和宏支持。也许一些隐写术 thingamajig 可以解决问题?

【问题讨论】:

标签: image cmd executable steganography


【解决方案1】:

这很难相信,但这是真的。我的调查(使用 Rohitab API Monitor)表明,在找到文件后,cmd.exe 首先调用 CreateProcessW - 并且只有在失败时(在这种情况下,错误 193 == ERROR_BAD_EXE_FORMAT) ,试试ShellExecuteW

这种行为实际上记录在KB811528 - Command Prompt (Cmd.exe) Runs Files That Do Not Have Executable File Name Extensions 中。当然,文章顺便提到这会导致病毒的执行(好像没什么特别的)。

这不适用于 Windows 资源管理器/shell32 对话框/大多数其他打开文件的程序 - 因为它们会立即调用 ShellExecute。但这通常适用于使用systemCreateProcess执行命令行的程序! (您还记得在基于 InstallShield 的安装过程中像 setup.tmp 这样的过程吗?它们就是示例。)

并非所有运行任意命令的程序都会受到影响。例如。 Total Commander 不是:即使是命令行,它也会调用ShellExecute


现在,关于您的具体问题。第二个指南实际上展示了一个exploit(假设它不仅仅是一个骗局)——作者特意制作了图像以利用 Windows 照片库中的一些漏洞(现在可能已经修补)使其执行包含的代码。这通常是不可能的。

所以,你有两个选择:

  1. 通过另一个程序(使用快捷方式或其他方式)启动您的程序, 但是用不会创建控制台窗口的东西替换cmd。想到了wscript
  2. 使用一些应该包含可执行代码的“智能”图像格式。我不知道有任何 image - 毕竟,图像应该包含图片,而不是代码!
    • 当然,有不止几种复合/“智能” 格式(您列举了其中的一些)。然而,他们倾向于对何时可以调用其中的代码以及允许执行的操作施加严格的限制。 我会让你知道,这些限制是专门作为对其他人做你想做的事情的回应而引入的。

【讨论】:

    【解决方案2】:

    鉴于你所说的,我很难相信。

    CMD 将执行任何具有可识别的可执行扩展名或具有未知扩展名的图像文件(即类似于 exe 的程序文件 - 与图片完全无关)。 jpg 被称为文档类型文件,因此它们被 Windows 照片库作为文档打开。 Explorer 不会执行未知的扩展。 CMD 和 Explorer 都使用 Explorer 的文件扩展名数据库来确定如何打开文档文件。

    因此,您需要解释为什么它不能在标准配置的 Windows 计算机上运行时在您的计算机上运行。

    【讨论】:

    猜你喜欢
    • 2011-01-17
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多