我在Visual Basic中创建了一个简单的程序,然后根据this和this将其设置为JPG扩展并将其设置为使用命令行cmd.exe /c my_program.jpg
从快捷方式运行导板。
到目前为止一切都很好,但我想从没有命令提示符打开的图像中运行我的程序。
我知道这样的事情是可能的,因为我可以从PDF,RTF或Word文档运行程序,因为大多数PDF文件都具有JS API功能,而Microsoft Office文档具有VBA和宏支持。也许一些隐写的东西可以做到这一点?
答案 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
。但这通常适用于使用system
或CreateProcess
执行命令行的程序! (您是否记得在基于InstallShield的安装过程中像setup.tmp
这样的过程?它们就是示例。)
并非所有运行任意命令的程序都会受到影响。例如。 Total Commander不是:它甚至为命令行调用ShellExecute
。
现在,关于你的具体问题。第二个指南实际上展示了一个 exploit (假设它不仅仅是一个骗局) - 作者专门制作了图像来利用Windows Photo Gallery中的一些漏洞(可能已被修补)使其执行包含的代码。这通常不可能。
所以,你有两个选择:
cmd
。想到wscript
。答案 1 :(得分:1)
鉴于你所说的话,我很难相信。
CMD将执行任何图像文件(这是一个类似于exe的程序文件 - 与图像无关),具有可识别的可执行扩展名或具有未知扩展名。 jpg被称为文档类型文件,因此它们由Windows照片库作为文档打开。资源管理器不会执行未知的扩展。 CMD和Explorer都使用Explorer的文件扩展名数据库来计算如何打开文档文件。
因此,当您的计算机无法在标准配置的Windows计算机上运行时,您需要解释它在计算机上的工作原理。