以JPG

时间:2015-08-06 12:02:16

标签: image cmd executable steganography

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

到目前为止一切都很好,但我想从没有命令提示符打开的图像中运行我的程序。

我知道这样的事情是可能的,因为我可以从PDF,RTF或Word文档运行程序,因为大多数PDF文件都具有JS API功能,而Microsoft Office文档具有VBA和宏支持。也许一些隐写的东西可以做到这一点?

2 个答案:

答案 0 :(得分:4)

这很难相信,但事实并非如此。我的调查(使用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 Photo Gallery中的一些漏洞(可能已被修补)使其执行包含的代码。这通常不可能。

所以,你有两个选择:

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

答案 1 :(得分:1)

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

CMD将执行任何图像文件(这是一个类似于exe的程序文件 - 与图像无关),具有可识别的可执行扩展名或具有未知扩展名。 jpg被称为文档类型文件,因此它们由Windows照片库作为文档打开。资源管理器不会执行未知的扩展。 CMD和Explorer都使用Explorer的文件扩展名数据库来计算如何打开文档文件。

因此,当您的计算机无法在标准配置的Windows计算机上运行时,您需要解释它在计算机上的工作原理。