我想在图像文件中隐藏bat文件或其命令,因此当打开图像时,bat文件中的命令将被执行。
答案 0 :(得分:8)
假设您专门针对Windows平台(使用“批处理”文件)说话,则不能。
批处理文件已解析,未编译,因此包含批处理的图像文件仍将作为图像文件读取。
我真的不能比那些不这样的工作更清楚地总结。
但是,假设您正在做道德,可以重新关联,例如,使用命令提示符打开.jpg扩展名并放置批处理带有.jpg扩展名的文本文件中的脚本。
最后一点:StackOverflow成员经常对这些问题的看法很糟糕,因为你几乎没有想过以良好的意图来实现这样的目标。我不会是第一个激怒你的人,但我绝对不会是最后一个。
答案 1 :(得分:4)
有多种方法可以使单个文件包含两个不同的数据流,这些数据流彼此独立,不会相互干扰。 One commonly cited example这就是如何将.zip文件附加到.jpg文件,并且仍然将组合文件功能作为两种类型的文件,具体取决于打开它的应用程序类型。这个技巧利用了jpeg和zip文件的特定结构。这些类型的文件类似于polyglot program。
将不相关信息嵌入文件的另一种常用方法是steganography,它隐藏了普通对象(如图像文件)中的消息。
您也可以考虑使用Alternate Data Stream,但在这种情况下,批处理文件可能无法嵌入 图像。
无论何种方式嵌入批处理文件,您都必须找到一种方法来运行批处理文件,而不是 - 或者除了 - 用户配置的任何图像查看应用程序。< / p>
可以安全地假设普通用户不希望以.jpg结尾的文件(例如)打开cmd.exe窗口并开始执行未知指令。 Windows资源管理器,在大多数情况下决定在双击某个文件类型时运行什么程序的应用程序,具有合理的默认值(即使用图像查看应用程序打开.jpg文件)虽然这些可以更改(尽管用户通常不会不要将这些理智的默认值更改为疯狂的自定义项,例如cmd.exe。)
最简单的方法是编写自己的处理程序并使其成为图像文件类型的默认处理程序。我相信所有处理程序应用程序必须是编译的PE应用程序或库文件(.exe
,.dll
,.scr
等),因此另一个批处理文件在这里不起作用。您的自定义处理程序必须反转嵌入以检索嵌入的批处理文件,然后使用cmd.exe执行它。
但是如果你已经设法用自己的代码取代默认处理程序,那么嵌入式批处理文件就没有用了,因为你已经运行了代码。
我必须回应@ Di-0xide对这个问题所说的话。如果您正在尝试编写合法的应用程序并且这是您的设计计划的一部分,那么您需要回到绘图板,因为没有合法的应用程序曾经做这类事情。
答案 2 :(得分:2)
虽然毫无疑问,为什么有人想在图像中嵌入批处理文件会有更多的malace原因, 并在打开图像时执行。我至少可以看到一个想要执行任务的正当理由。
如果您有一台家庭电脑,与您的2个孩子,妻子和您自己共享,该怎么办?让我们说你有一些你不喜欢的文件 希望你的孩子遇到,或者一个充满日记条目的目录。如果一个简单的批处理文件,那将是非常整洁的 更改包含敏感文件的目录的属性设置。通过这种方式,父母可以保证他们的 孩子们不会偶然发现父亲nudie pics。大声笑
IE:让我们说有人写了2个简单的批处理文件s.bat(显示目录)和h.bat(隐藏目录)hide.bat
@echo off
REM Show the directory containing sensitive info:
attrib +a +s +h +r C:\path\to\the\directory\to\hide
REM Hide this batch file(or image containing the batch file):
attrib +a +s +h +r C:\path\to\the\batch\files\hide.bat
REM Show a batch file(or image containing the batch file) that will allow for showing the directory:
attrib -a -s -h -r C:\path\to\the\batch\files\show.bat
show.bat
@echo off
REM Show the directory containing sensitive info:
attrib -a -s -h -r C:\path\to\the\directory\to\hide
REM Show the batch file(or image containing the batch file) that will allow user to hide directory:
attrib -a -s -h -r C:\path\to\the\batch\files\h.bat
REM Hide this batch file(or image containing the batch file):
attrib +a +s +h +r C:\path\to\the\batch\files\s.bat
我认为使用执行show.bat和hide.bat批处理文件的图像会更好,而不仅仅是更改每个批处理文件上的图标。
也许编写一个可以改变目录属性的处理程序,然后打开图像并将处理程序与一些未使用的扩展相关联,这样可行。
只是一个想法。
答案 3 :(得分:1)
最简单的方法是正常创建批处理文件,然后创建同一批处理文件的桌面快捷方式。最后右键单击快捷方式并将图标更改为您想要的图像。完成所有更改后,只要打开图像,批处理文件就会运行。
答案 4 :(得分:0)
这很容易,只需使用winrar存档将bat文件嵌入图像中。这将在图像前运行bat文件,或者您可以更改设置以在图像前运行bat文件。
请按照本教程进行操作: https://www.youtube.com/watch?v=ytvKVYYrqEw