通过php提取自解压exe存档文件

通过php提取自解压exe存档文件,php,exe,unpack,self-extracting,Php,Exe,Unpack,Self Extracting,我有个问题。我有一个提供给我.exe文件的服务,他们声称这个文件实际上是zip存档文件。自解压档案。 问题是,我正在用我的应用程序(php)将其下载到服务器上,需要在不下载到本地计算机的情况下将其解压缩。 我曾尝试将.exe文件下载到本地计算机-它在windows上自解压到/temp dir,而不是自启动FLASH player $zip=zip\u open($myfile);以印刷形式提供($zip):1 zip->open也不会给出任何结果。 将.exe更改为.zip不允许winzip或w

我有个问题。我有一个提供给我.exe文件的服务,他们声称这个文件实际上是zip存档文件。自解压档案。 问题是,我正在用我的应用程序(php)将其下载到服务器上,需要在不下载到本地计算机的情况下将其解压缩。 我曾尝试将.exe文件下载到本地计算机-它在windows上自解压到/temp dir,而不是自启动FLASH player

$zip=zip\u open($myfile);以印刷形式提供($zip):1 zip->open也不会给出任何结果。 将.exe更改为.zip不允许winzip或windows上的其他解封程序打开它-.exe也不能由winzip打开


现在我不知道该怎么处理。如果有人能提供建议,请。

尝试使用命令将程序作为可执行文件执行。

尝试使用命令将程序作为可执行文件执行。

好。。。如果您的PHP服务器是Windows,那么将其作为系统命令执行应该不会有问题。否则,这就有点棘手了。我听说解压系统命令将解压自解压zip文件,但我目前还没有访问Linux设备来试用它


如果您使用的是共享主机,那么很可能您无法做到这一点。

嗯。。。如果您的PHP服务器是Windows,那么将其作为系统命令执行应该不会有问题。否则,这就有点棘手了。我听说解压系统命令将解压自解压zip文件,但我目前还没有访问Linux设备来试用它


如果您使用的是共享主机,则很可能无法执行此操作。

如果您认为在执行exe文件后,它将提取其内容,则可以使用函数运行.exe文件,如下所示:

exec("d:\\example\\php\_exe\\1436.exe");
您还可以使用
system
函数运行外部程序

如果你想知道有什么不同:


如果您认为在执行exe文件后,它将提取其内容,那么您可以使用函数运行.exe文件,如下所示:

exec("d:\\example\\php\_exe\\1436.exe");
您还可以使用
system
函数运行外部程序

如果你想知道有什么不同:


从您不完全信任的外部源执行文件从来都不是一个好主意

zip版本允许您从自解压zip文件(带有-J标志)中删除SFX存根,并将其转换回普通zip文件

源代码是免费提供的


制作自解压zip文件需要在zip文件前面加上SFX二进制代码,然后将二进制存根的大小附加到生成的文件中-但我不确定数据是如何表示的-但对可用代码进行一点反向工程应该可以清楚地说明这一点。

从您不完全信任的外部源执行文件从来都不是一个好主意

zip版本允许您从自解压zip文件(带有-J标志)中删除SFX存根,并将其转换回普通zip文件

源代码是免费提供的


制作一个自解压zip文件需要先用SFX二进制代码预写一个zip文件,然后将二进制存根的大小附加到生成的文件中——但我不确定数据是如何表示的——但对可用代码进行一点反向工程应该可以清楚地说明这一点。

+1因为它是一个.exe文件,您不能只将其提供给zip,解压器将不知道如何处理PE头和二进制文件。事实上,它将查看第一个字节,发现它们是“MZ”而不是“PK”,并将退出。显然,运行可执行文件并非没有安全问题。话虽如此,您应该能够将文件加载到字符串中并搜索
0x50 0x4B 0x03 0x00
,这标志着实际ZIP数据的开始,假设声明“it is ZIP”是正确的(而不是LZMA或其他东西)。将从那里开始的数据输入zip解压器。我在记事本++中打开了它,在里面找到了一句话:“这个程序不能在DOS模式下运行。”文件以“MZ”字符开头。+1因为它是一个.exe文件,你不能只将它输入zip,解压器不知道如何处理PE头和二进制文件。事实上,它将查看第一个字节,发现它们是“MZ”而不是“PK”,并将退出。显然,运行可执行文件并非没有安全问题。话虽如此,您应该能够将文件加载到字符串中并搜索
0x50 0x4B 0x03 0x00
,这标志着实际ZIP数据的开始,假设声明“it is ZIP”是正确的(而不是LZMA或其他东西)。将从那里开始的数据输入到zip解压器。我在记事本++中打开了它,发现里面有一句话:“这个程序不能在DOS模式下运行。”文件以“MZ”字符开头。抱歉——一个误导性的事实——服务器是linux。我相信内容——它只是一些打包下载的flash会话——所以我不担心任何排序的“安全性”,生成的文件不是“zip”。只是花了一段时间才弄明白。我只是还不知道如何提取自己的extart拉链。无论如何,谢谢大家的帮助。对不起——一个误导性的事实——服务器是linux。我相信内容——它只是一些打包下载的flash会话——所以我不担心任何排序的“安全性”,生成的文件不是“zip”。只是花了一段时间才弄明白。我只是还不知道如何提取自己的extart拉链。无论如何,谢谢大家的帮助。事实上,我正在使用共享主机,并且花了一整天的时间试图找出如何做到这一点:/嗯,您需要从您的主机公司了解一些事情:服务器是什么操作系统(Windows/Linux)?如果是Windows,您可以将EXE作为系统命令运行吗?(怀疑他们会允许)如果是Linux,你能作为系统命令运行解压吗?它的Bluehost,架构x86_64,操作系统Linux。如果可能的话,我会尝试“解压”,因为它现在已经关闭了。事实上,我正在共享主机上,并且花了一整天的时间试图找出如何解压