当查看图像时执行bat文件

5
我想把一个批处理文件或其命令隐藏在图像文件中,这样当打开图像时,批处理文件中的命令将被执行。

4
这怎么不是恶意的呢? - Qix - MONICA WAS MISTREATED
4
我来到这里是为了寻找同样的东西(数年后),因为我想要运行一个 .bat 文件,在他们的命令提示符上显示一个有趣的消息......因为我和我的朋友喜欢互相开玩笑。 :-) 完全没有恶意。 - DevOpsSauce
5个回答

8
假设您特别为 Windows 平台(因为有“批处理”文件)说话,您不能这样做。批处理文件是解析而非编译的,因此带有批处理的图像文件仍会被视为图像文件。我真的无法更清楚地总结出来,事情就是不会像这样工作。但是,假设您正在以道德方式进行操作,您可以重新关联 .jpg 扩展名以使用命令提示符打开,并将批处理脚本放在带有 .jpg 扩展名的文本文件中。最后一点:类似这样的问题通常受到 StackOverflow 成员的反感,因为您很少会以良好的意图尝试实现这样的目标。我不会是第一个抨击你的人,但我肯定不会是最后一个。

3
我没有伤害他人的意图。当图片被查看时,我想要弹出一个“生日祝福”。 - Udara S.S Liyanage

4

有许多方法可以使单个文件包含两个独立且不相互干扰的数据流。其中一个常见的例子就是将.zip文件附加到.jpg文件上,仍然可以根据打开它的应用程序类型来同时使用这两种类型的文件。这个技巧利用了jpeg和zip文件特定的结构方式。这些文件类似于多语言程序

另一种将不相关信息嵌入文件的常见方法是隐写术,即将消息隐藏在平凡的物体(如图像文件)中。

您还可以考虑使用备用数据流,但在这种情况下,批处理文件可能不会被嵌入图像中。

一旦您已经嵌入批处理文件,无论是通过什么方式,您必须找到一种方法来使批处理文件被运行,而不是或者除了用户配置的任何图像查看应用程序之外。
可以安全地假设,普通用户不希望以 .jpg 结尾的文件(例如)打开 cmd.exe 窗口并开始执行未知的指令。Windows Explorer 是在大多数情况下决定双击某个文件类型时运行哪个程序的应用程序,它有理智的默认值(即 .jpg 文件会使用图像查看应用程序打开),尽管这些可以更改(尽管用户通常不会将这些理智的默认值更改为疯狂的自定义,如 cmd.exe)。
最简单的方法是编写自己的处理程序,并使其成为图像文件类型的默认处理程序。我相信所有处理程序应用程序都必须是编译的 PE 应用程序或库文件(.exe、.dll、.scr 等),因此另一个批处理文件在此处不起作用。您的自定义处理程序必须反向嵌入以检索嵌入的批处理文件,然后使用 cmd.exe 执行它。
但是,如果您已经成功用自己的代码替代了默认处理程序,则嵌入的批处理文件就无关紧要了,因为您已经运行了自己的代码。
我必须重申@Di-0xide关于这个问题的说法。如果你试图编写一个合法的应用程序,并且这是你设计计划的一部分,那么你需要回到绘图板上,因为没有任何合法的应用程序应该做这样的事情。

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批处理文件,而不仅仅是更改每个批处理文件的图标。
也许编写一个处理程序来更改目录属性,然后打开图像并将处理程序关联到一些未使用的扩展名,会更好地解决问题。
这只是一个想法。

1

最简单的方法是先像平常一样创建批处理文件,然后创建一个相同的批处理文件的桌面快捷方式。最后右键单击快捷方式并将图标更改为任何您想要的图像。完成所有更改后,每次打开图像时,批处理文件都会运行。


我不确定这是否是Udara想要的。这只会在打开桌面上的链接时运行批处理文件,而不是打开图像文件。图像和.lnk文件之间有一个明显的区别。 - Patrick Artner

0

这很容易,只需使用WinRAR存档将bat文件嵌入图像中。这将在图像之前运行bat文件,或者您可以更改设置以在bat文件之前运行图像文件。

按照本教程操作即可: https://www.youtube.com/watch?v=ytvKVYYrqEw


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接