运行 来自 .zip 的 powershell 中的 .png 作为 .exe

Running a .png as .exe in powershell from a .zip

我正在尝试伪装一个可执行文件,但遇到了一些问题,但只有一个我需要帮助,我正在 运行从 cmd:

PowerShell -ExecutionPolicy bypass -noprofile -windowstyle hidden start-process C:\Users\b0nke\AppData\Roaming\.minecraft\resourcepacks\§4VotPack§cOverlay.zip\assets\minecraft\textures\items\clock.png

您可以看到我正在尝试 运行 在 .zip 中添加 .png。但是我想将 .png 作为可执行文件打开,这可能吗?

额外信息:我可以从 cmd 运行 .png 作为 .exe,但我使用的是 powershell,因为它可以 运行 存档内的文件,如果我要运行 它在存档之外,应该是这样的:

C:\Users\b0nke\AppData\Roaming\.minecraft\resourcepacks\clock.png

请回复一些提示或解决方案。

它与 运行 一个 exe 基本相同 -

start G:\image.png

start $usbDriveLetter"image.png"

image.png

您需要将其更改为 $env:USERNAME 而不是 $USERNAME

不,在 PowerShell 中 - 明智地 - 你 不能 使用 non-executable 文件扩展名,例如 .png 来直接执行文件那是一个可执行文件(伪装) - PowerShell 遵从 Windows (GUI) shell,它使用为手头的文件扩展名注册的应用程序打开文件(在.png 的情况默认为​​ Photos - 这只会抱怨无法识别的图像格式。

令人难以置信 - 正如你所说,相比之下 - cmd.exe 显然在采取行动之前明确检查文件格式本身,并直接执行可执行文件,即使它们恰好具有 non-executable 文件扩展名。

注:

  • 也许不用说,从安全的角度来看,PowerShell 的行为更可取,因为它可以防止毫无戒心的用户无意中执行可执行文件,这些用户有理由认为给定文件确实属于其文件扩展名宣传的类型,而不是伪装的可执行文件。

如果你真的需要这个功能(很难想象non-deceptive使用):

原则上,您可以从 PowerShell 调用 cmd.exeCLI 以使用前者的功能;例如:

cmd /c .\clock.png

然而,这只适用于 cmd.exe 也理解的文件路径。

它不适用于以文件为目标的路径 ZIP 存档内 - 但我也不知道它在 PowerShell 中是否有效,这与您所说的不同。