Распаковка самораспаковывающегося exe-архива через php - PullRequest
0 голосов
/ 28 июня 2011

У меня проблема.У меня есть служба, которая дает мне .exe-файл, который, как они утверждают, на самом деле является zip-архивом.Самораспаковывающийся архив.Проблема в том, что я загружаю это с моим приложением (php) на сервер и мне нужно извлечь его без загрузки на локальный компьютер.Я попытался загрузить .exe файл на локальный компьютер - он самораспаковывается в Windows в / temp dir, а затем самозапускается проигрыватель FLASH.

$ zip = zip_open ($ myfile);дает в print_r ($ zip): 1 zip-> open также не дает результатов.изменение .exe на .zip не позволяет winzip или другим видам распаковки на окнах открывать его - .exe также не может быть открыто с помощью winzip.

Теперь я понятия не имею, как с этим бороться.Если кто-нибудь может посоветовать, пожалуйста.

Ответы [ 4 ]

2 голосов
/ 28 июня 2011

Попробуйте выполнить программу как исполняемый файл с помощью system command

1 голос
/ 28 июня 2011

Выполнение файлов из внешнего источника, которому вы не доверяете на 100%, никогда не является хорошей идеей.

Версия zip info-zip позволяет удалить SFX-заглушку из самораспаковывающегося zip-файла (с флагом -J), преобразовав его обратно в обычный zip-файл.

Исходный код находится в свободном доступе.

Создание самораспаковывающегося zip-файла заключается в добавлении zip-файла к двоичному коду SFX, а затем добавлении размера двоичной заглушки в результирующий файл - но я не уверен, как представлены данные, - но Немного обратного инжиниринга имеющегося кода должно прояснить это.

0 голосов
/ 28 июня 2011

Ну, если вы думаете, что после выполнения exe-файла он извлечет его содержимое, то вы можете использовать функцию exec для запуска .exe-файлов, как показано ниже:

exec("d:\\example\\php\_exe\\1436.exe");

, а также вы можете использовать функцию system для запуска внешних программ.

А также, если вам интересно, в чем разница:

PHP - exec () против system () против passthru ()

0 голосов
/ 28 июня 2011

Хорошо ... если ваш PHP-сервер работает под управлением Windows, у вас не должно возникнуть проблем с выполнением этого в качестве системной команды.В противном случае, это немного сложнее.Я слышал, что системная команда unzip разархивирует самораспаковывающиеся zip-файлы, но в настоящий момент у меня нет доступа к коробке Linux, чтобы попробовать ее.

Если вы используете общий хостинг, естьты не можешь сделать это.

...