Редактировать бинарный файл внутри самораспаковывающегося CAB-архива Windows?

386
Wossname

У меня есть старый файл "Win32 Cabinet Self-Extractor" (расширение * .exe), в который я хотел бы внести небольшие изменения.

Я не знаю, откуда исходный файл или кто его создал, но можно открыть файл в 7-Zip и хотя бы просмотреть его содержимое.

Цель этого самораспаковывающегося установщика - установить часть прошивки на устройстве PCIe.

Один файл внутри архива необходимо слегка изменить, чтобы в самом начале была вставлена ​​короткая последовательность двоичных файлов (серийный номер длиной 8 байт), увеличивая длину файла на 8 байт. Затем я хочу сохранить изменения и выйти из архива, чтобы новый файл был на месте старого. Я не меняю имена файлов в архиве.

Я использую Windows 7, а 7-Zip не позволяет мне изменять файл на месте (возможно, что неудивительно), говоря, что он «только для чтения» (exe не только для чтения в соответствии с проводником).

Есть ли способ сделать это?

К сожалению, я не могу загрузить файл, потому что он содержит конфиденциальную информацию о компании.

0

2 ответа на вопрос

1
Keltari

Тебе этого не сделать. Файлы внутри сжаты и не могут быть изменены. Если вы это сделаете, архив будет поврежден. Возможность распаковки файлов уникальна для содержимого архива в целом. Вам нужно извлечь файлы, внести любые изменения, а затем воссоздать архив.

Я не использовал никаких инструментов для создания CAB много лет. Они могут позволить вам сделать это. Тем не менее, они просто делают шаги выше.

1
harrymc

Вы должны сначала извлечь все файлы из CAB в какую-то папку. Это можно сделать с помощью 7-Zip, другой утилиты или утилиты Windows expand:

Expand mycab.cab -F:* C:\myfolder 

Затем вы можете изменить свой файл внутри папки C:\myfolderи снова сжать его с помощью утилиты Windows makecab :

makecab /f filename.ddf 

Файл директивы (.ddf) выглядит следующим образом:

.Set CabinetNameTemplate=mycab.cab .Set SourceDir=C:\myfolder .Set Cabinet=on .Set Compress=on  "file1name.txt" "file2name.txt" 

Более подробную информацию о файлах DDF можно найти в статье Синтаксис файла директивы MAKECAB .

Полное руководство пользователя Microsoft можно найти в Руководстве пользователя Microsoft MakeCAB .