Сжатые файлы и ModifyPE

Автор: Вадим Стеркин
Иcточник: (переведено с английского) unattended.msfn.org
Опубликована: 05.03.2005

Если вам понадобится модифицировать системные файлы, то вы с большой вероятностью столкнетесь с тем, что в дистрибутиве они находится в сжатом виде. Вам надо будет их распаковать, модифицировать и снова запаковать (сжать). Даже если вы успешно отредактируете и сожмете файлы, вы можете получить ошибку копирования во время установки системы.

Expand распаковывает сжатые файлы, восстанавливая их оригинальную форму.

Makecab перепакует измененные файлы или любые файлы, которые вы заходите добавить в дистрибутив. При этом расширение файлов изменится соответствующим образом (например, с *.dll на *.dl_). Кроме того makecab сжимает файлы, уменьшая их размер.

Утилита ModifyPE исправит контрольную сумму модифицированных файлов и предотвратит ошибку "File was not copied correctly" во время инсталляции системы.

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

Expand | Makecab | ModifyPE

Отступление о работе с командной строкой

Мы будем работать с командной строкой. Если запускать ее обычным методом (Пуск | Выполнить | cmd), то придется в ней печатать полный путь к директории, в которой расположены модифицируемые или упаковываемые файлы. В файловых менеджерах FAR и TotalCommander встроенная командная строка вызывается из текущей директории, избавляя пользователя от необходимости печатать пути к файлам. Если же вы пользуетесь Проводником, то можно добавить вызов командной строки в контекстное меню папки. Достаточно скопировать приведенный ниже текст в Блокнот, сохранить файл с любым именем, но расширением *.REG и запустить. В контекстном меню папки появится опция "Command Prompt".

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Command Prompt]
@="Открыть консоль"

[HKEY_CLASSES_ROOT\Directory\shell\Command Prompt\command]
@="cmd /k pushd %L"

[HKEY_CLASSES_ROOT\Drive\shell\Command Prompt]
@="Открыть консоль"

[HKEY_CLASSES_ROOT\Drive\shell\Command Prompt\command]
@="cmd /k pushd %L"

Если вы хотите назвать опцию иначе, то замените везде "Command Prompt" на ваше название.

Expand

Expand - стандартная команда Windows XP. Запустите командную строку и перейдите к папке, в которой расположен упакованный файл. Введите команду

expand.exe -r filename.xxx

где filename.xxx - имя вашего файла. В примере на скриншоте распаковывается файл C:\winntbbu.dl_.

Expand

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

Makecab

Makecab, как и makecab, является стандартной командой Windows XP. Запустите командную строку и перейдите к папке, в которой расположен файл, который вы хотите упаковать. Введите команду

makecab.exe filename.xxx

где filename.xxx - имя вашего файла. В примере на скриншоте упаковывается файл C:\winntbbu.dll.

Makecab

Если вы все сделали правильно, то вы увидите такое же сообщение, как на скриншоте. Ваш новый файл будет расположен в той же директории, что и старый. Он будет иметь такое же имя, за исключением последней буквы расширения, которая будет заменена на _.

ModifyPE

Если вы измените системный файл при помощи редактора ресурсов типа ResEdit или Resource Hacker, и включите его в дистрибутив, то во время инсталляции системы неизбежно получите ошибку копирования. Программа установки Windows проверяет контрольную сумму всех копируемых файлов, и в случае несовпадения отказывается копировать. Утилита ModifyPE корректирует контрольную сумму, и как следствие файл воспринимается как родной.

Несмотря на то, что программа установки Windows допустит копирование файла, по окончании установки в файл setuperr.log вносится запись о том, что файл не имеет цифровой подписи Microsoft. Возможна ситуация, когда при проверке целостности файлов Windows захочет восстановить оригинальный файл. Отключить проверку системных файлов можно при помощи nLite.

Для начала скачайте ModifyPE отсюда. Теперь встает вопрос, куда распаковать исполняемый файл из архива. Можно куда угодно, но рекомендую в директорию %windir%\System32, тогда не надо будет указывать путь к утилите при работе с командной строкой.

Работать с утилитой просто. Запустите командную строку и перейдите к папке, в которой расположен модифицируемый файл. Введите команду

modifype.exe filename.xxx -c

где filename.xxx - имя вашего файла. В примере на скриншоте модифицируется файл C:\winntbbu.dll.

modifype

Если вы все сделали правильно, то вы увидите такое же сообщение, как на скриншоте.


Ссылка: http://www.oszone.net/2806/