Как извлечь ZIP из самораспаковывающегося exe?

16

Ну, предмет говорит обо всем. У меня есть exe-файл, который является SFX, и я хочу извлечь ZIP из SFX. Как я могу это сделать?

ТКС
источник

Ответы:

16

7-Zip должен уметь это делать. Вы можете щелкнуть правой кнопкой мыши файл и выбрать «Открыть архив» или перейти к файлу в 7-Zip и щелкнуть правой кнопкой мыши и выбрать «Открыть внутри».

Dracs
источник
@Darcs: я не могу открыть архив, потому что почтовый индекс зашифрован паролем. Я просто хочу извлечь ZIP из exe, без разархивирования в середине.
TCS
Не могу сказать, сработает ли он для вашего файла, но простое изменение расширения с .exe на .zip мне показалось правильным. Он по-прежнему будет содержать исполняемые части файла, но 7-Zip, кажется, совершенно счастлив игнорировать его.
Dracs
7-zip откроет и распознает его, но я не хочу exe-часть в файле (чисто zip-файл, его заголовок PK, а не MZ, как exe).
TCS
1
Мне удалось сделать это с помощью шестнадцатеричного редактора. Простой zip-файл и отредактированный SFX идентичны. Процесс, который я сделал, заключался в поиске заголовка zip-файла в SFX. Для 7-Zip это, кажется, 37 7A до н.э., я сделал поиск последнего появления этого. Затем я удалил все до этого. Это, кажется, дает мне файл, идентичный архивированию моего тестового файла сам по себе. Если вам нужен шестнадцатеричный редактор, я использовал XVI32 . Дайте мне знать, если это работает для вас или вам нужна дополнительная помощь.
Драк
1
Если это ZIPархив надлежащего формата, правильный способ найти данные - найти заголовок центрального каталога по его четырехбайтовому магическому номеру и прочитать центральный каталог, чтобы найти первый заголовок файла.
JdeBP
7

В Linux это возможно с помощью утилиты "zip":

$ file london_f.exe
london_f.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit

Предупреждение: следующая строка изменяет исходный файл .exe, чтобы сделать его чистым zip-архивом без частей exe!

$ zip -J london_f.exe
$ file london_f.exe
london_f.exe: Zip archive data, at least v1.0 to extract
$ zip --version
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
Currently maintained by E. Gordon.  Please send bug reports to
the authors using the web page at www.info-zip.org; see README for details.
...
user2771443
источник
1

На Linux, если он упрямый и

zip -J file.exe

не преобразует его в извлекаемый zip, потому что не-zip часть не просто добавлена, см. страницу руководства:

   -J
   --junk-sfx
          Strip any prepended data (e.g. a SFX stub) from the archive.

тогда утилита zip имеет две другие полезные опции:

   -F
   --fix
   -FF
   --fixfix
          Fix the zip archive. The -F option can be used if some portions of the archive are missing, but requires a reasonably intact  central  directory.   The
          input archive is scanned as usual, but zip will ignore some problems.  The resulting archive should be valid, but any inconsistent entries will be left
          out.

          When doubled as in -FF, the archive is scanned from the beginning and zip scans for special signatures to identify the limits between the archive  mem‐
          bers. The single -F is more reliable if the archive is not too much damaged, so try this option first.

          If  the  archive is too damaged or the end has been truncated, you must use -FF.  This is a change from zip 2.32, where the -F option is able to read a
          truncated archive.  The -F option now more reliably fixes archives with minor damage and the -FF option is needed to fix archives where -F  might  have
          been sufficient before.

          Neither  option  will recover archives that have been incorrectly transferred in ascii mode instead of binary. After the repair, the -t option of unzip
          may show that some files have a bad CRC. Such files cannot be recovered; you can remove them from the archive using the -d option of zip.

          Note that -FF may have trouble fixing archives that include an embedded zip archive that was stored (without compression) in the archive and, depending
          on the damage, it may find the entries in the embedded archive rather than the archive itself.  Try -F first as it does not have this problem.

          The format of the fix commands have changed.  For example, to fix the damaged archive foo.zip,

                 zip -F foo --out foofix

          tries  to read the entries normally, copying good entries to the new archive foofix.zip.  If this doesn't work, as when the archive is truncated, or if
          some entries you know are in the archive are missed, then try

                 zip -FF foo --out foofixfix

          and compare the resulting archive to the archive created by -F.  The -FF option may create an inconsistent archive.  Depending on what is damaged,  you
          can then use the -F option to fix that archive.

          A split archive with missing split files can be fixed using -F if you have the last split of the archive (the .zip file).  If this file is missing, you
          must use -FF to fix the archive, which will prompt you for the splits you have.

          Currently the fix options can't recover entries that have a bad checksum or are otherwise damaged.

Так что постарайтесь

zip -F file.exe --out extracted.zip

и если это не удается

zip -FF file.exe --out extracted.zip
Никто
источник
1

Я еще не видел программу манипуляции с почтовым индексом, которая не может этого сделать. Самораспаковывающиеся архивы также являются действительными zip-файлами, просто с кучей дополнительных вещей в них (экстрактор).

Вы, вероятно, обнаружите, что вы не можете выбрать утилиту как способ открытия файла, но если вы просто запустите утилиту и затем выберите файл, он работает.

Лорен Печтель
источник
0

Вы можете открыть файл SFX с помощью WinZip, если вы хотите получить доступ к файлам внутри. Вам не нужно выполнять файл.

Похоже, что ряд других утилит сжатия также откроет файлы SFX.

Рори Олсоп
источник
Я не хочу распаковывать файл (он защищен паролем), я просто хочу извлечь ZIP из EXE-файла.
TCS
Это сделает это для вас. Откройте в WinZip и сохраните архив как что-нибудь
.zip
0

У меня была похожая проблема, исполняемый файл SFX, который в основном запускает исполняемый файл, который затем позволяет запускать файлы в архиве. Открытие exe в 7zip показывает, что он защищен паролем. Я искал решение, оно должно хранить пароль в каком-то заголовке ... Во время чтения этой темы мне пришло альтернативное решение.

Запустите исполняемый файл, затем проверьте C: \ windows \ temp по дате сортировки и найдите папку, в которую был извлечен исполняемый файл. Внутри zip находятся файлы. Выньте их и застегните на молнию. Виола! у вас есть почтовый индекс exe, без пароля.

PhilFCS
источник
0

Если вы имеете дело с играми gog.com, используйте Innoextract . unzip, unrar, 7zip и другие не работают для меня.

Роберт
источник
Другие программы zip НЕ работают с файлами GOG? Являются ли файлы GOG самораспаковывающимися?
music2myear