## Resource HackerTM

... свободно распространяемый компилятор и декомпилятор ресурсов для приложений Windows®
Версия 5.2.8 (стабильный выпуск)
Последнее обновление: 6 Марта 2025
Авторское право © 1999-2025 Ангус Джонсон
awj1958@gmail.com
Бесплатная программа - без всплывающих окон, без рекламы и с полным функционалом.
Перевод: alexalsp - 2023
Страница в сети: apocalypse.moy.su
Спасибо AltSolo за правки перевода.
Загрузить программу

### Общее представление:

Resource HackerTM — это редактор ресурсов для 32- и 64-битных приложений Windows. Является как компилятором ресурсов (для файлов *.rc), так и декомпилятором; включает просмотр и редактирование ресурсов в программах (*.exe; *.dll; *.scr; и др.) и компилятор ресурсных библиотек (*.res, *.mui). Хотя Resource Hacker — это прежде всего GUI-приложение, оно также предоставляет множество функций для компиляции и декомпиляции ресурсов из командной строки.

### Компиляция:

Компиляция может быть инициирована либо передачей файла сценария ресурсов как параметра командной строки (см. ниже), либо с помощью текстового редактора Resource Hacker.
Полный список операторов ресурсов можно найти здесь.
Дополнительные возможности компилятора Resource Hacker включают директивы #INCLUDE, #IF и #IFDEF, которые могут быть вложены на нескольких уровнях. Поддерживаемые директивы компилятора включают #DEFINE, #UNDEF, #IF, #ELIF, #ELSE, #IFDEF, #IFNDEF, #INCLUDE, и #PRAGMA. Строки в операторах ресурсов определены между символами двойные кавычки ("). Эти строки могут также содержать типичные в "C"-стиле "escaped"-символы управляющей последовательности: \t , \n , \\ , \" , \x, \u и \377 (восьмеричные). Двойные кавычки внутри строки могут быть вставлены лишь предваряя их либо слешем, либо другими двойными кавычками. Комментариям скрипта предшествуют либо двойная косая черта (//), либо точка с запятой (;). Разрешены имена файлов с относительными путями. Имена файлов с пробелами должны быть заключены в двойные кавычки.
Компилятор ошибок сообщает даже об ошибках синтаксиса оператора INCLUDE ...

### Просмотр и редактирование ресурсов:

После открытия файла его ресурсы обычно отображаются в виде изображения (или группы изображений) или в виде декомпилированного текста. Двоичные ресурсы, как правило, изображения, не могут быть отредактированы непосредственно с помощью Resource Hacker, но они могут быть очень легко экспортированы и импортированы, после того, как они были изменены во внешнем графическом редакторе. (Я не вижу необходимости внедрять в программу функционал, с которым так хорошо справляются сторонние редакторы.)
Типы ресурсов "Меню" и "Диалоговых окон" имеют собственный визуальный редактор:
Двоичные ресурсы с неизвестными форматами будут отображаться в виде двоичного (бинарного) кода только для чтения. (В этом же формате можно просмотреть любой ресурс, если это необходимо.)

### Другие возможности:

### Синтаксис командной строки:

Почти все функциональные возможности Resource Hacker можно получить из командной строки, не открывая графическую оболочку.
Инструкции командной строки и сценарии Resource Hacker помогут избавиться от повторяющихся задач.
Инструкции командной строки представляют из себя комбинацию команды и параметра, как описано ниже в таблице: Операторы командной строки:

Ключ |  | Параметр
--- | --- | ---
-open |  | имя_файла - имя файла, который необходимо изменить. Это должен быть Windows PE-файл (*.exe, *.dll и др.) или скомпилированный или нескомпилированный файл ресурсов (*.res или *.rc)
-save |  | как правило, имя файла для нового или измененного ресурса, но может быть и папкой при извлечении нескольких ресурсов.
-resource |  | имя_файла - содержимое ресурса, добавляемого в открытый файл
-action |  | действие, которое необходимо выполнить в открытом файле: add - добавить ресурс, если он уже существует addoverwrite - добавить ресурс, перезаписывая существующие addskip - добавить ресурс, пропуская существующие compile - компиляция скрипта файла ресурсов (*.rc) в двоичный файл ресурсов (*.res) delete - удалить ресурс extract - извлечь ресурс modify - изменить ресурс changelanguage(langID) - изменить язык ВСЕХ ресурсов
-mask |  | маска ресурса - тип,имя,язык запятые обязательны, но любой из параметров: тип,имя,язык - необязателен
-log |  | имя_файла или CONSOLE или NUL CONSOLE может быть сокращено до CON Запись подробностей выполненной операции в журнал. Если этот ключ опущен, журнал будет записан в resourcehacker.log
-script |  | имя_файла - содержимое скрипта с несколькими командами, а НЕ скрипт ресурса. Для дополнительной информации: -help script
-help |  | справка - параметры командной строки или скрипта (всегда выводится в CONSOLE), другие ключи игнорируются.

Примечания:

1. Идентификаторы ключей (кроме -script) могут быть сокращены до одного символа (например: -res или -r).
2. Операторы ключей можно размещать в любом порядке.
3. Имена файлов, содержащие пробелы, должны быть заключены в двойные кавычки.

Примеры пакетных файлов (используя rh.exe вместо ResourceHacker.exe для краткости)
reshack_help.bat:

    ResourceHacker.exe -help
    @pause  :: таким образом, мы видим консольный вывод до закрытия окна CMD.

reshack_compile_res_script.bat:

    rh.exe -open .\in\resources.rc -save .\out\resources.res -action compile -log NUL

reshack_add_icon_to_old.bat:

    rh.exe -open old.exe -save new.exe -action addskip -res my.ico -mask ICONGROUP,MAINICON,

reshack_extract_all_source_icons_to_icons_folder.bat:

    rh.exe -open source.exe -save .\icons -action extract -mask ICONGROUP,, -log CON
    @pause

reshack_extract_all_dialogs.bat:

    rh.exe -open source.exe -save .\dialogs.rc -action extract -mask DIALOG,, -log rh.log

reshack_execute_my_script.bat:

    ResourceHacker.exe -script myscript.txt

Сценарии Resource Hacker:
Сценарии Resource Hacker выполняются из командной строки с использованием следующего синтаксиса:

      ResourceHacker.exe -script ФайлСкрипта

Скрипты Resource Hacker представляют собой текстовые файлы следующего формата:

      //комментариям предшествуют двойные косые чёрточки
      [FILENAMES]
      Open=
      Save=
      Log=
      [COMMANDS]
      //одна или несколько из следующих команд ...
      -add          SourceFile, ResourceMask
      -addskip      SourceFile, ResourceMask
      -addoverwrite SourceFile, ResourceMask
      -addoverwrite SourceFile, ResourceMask
      -modify       SourceFile, ResourceMask
      -extract      TargetFile или TargetFolder, ResourceMask
      -delete       ResourceMask
      -changelanguage(langID)

Примечание: имена файлов, содержащие пробелы, должны быть заключены в двойные кавычки.
Примеры скриптов Resource Hacker:
rh_script_myprog_rus.txt -

      // Этот скрипт удаляет нейтральный язык (0) из всех
      // строковых таблиц, меню и диалоговых элементов ресурсов
      // в MyProg.exe перед заменой их русскими RUSSIAN (1049) пунктами...
      [FILENAMES]
      Exe=    MyProg.exe
      SaveAs= MyProg_Rus.exe
      Log=    MyProg_Rus.log
      [COMMANDS]
      -delete  MENU,,0
      -delete  DIALOG,,0
      -delete  STRINGTABLE,,0
      -add     MyProg_Rus.res, MENU,,1049
      -add     MyProg_Rus.res, DIALOG,,1049
      -add     MyProg_Rus.res, STRINGTABLE,,1049

rh_script_myprog_upd_images.txt -

      // Этот скрипт обновляет 2 растровых изображений и
      // иконку в MyProg.exe ...
      [FILENAMES]
      Exe=    MyProg.exe
      SaveAs= MyProg_Updated.exe
      [COMMANDS]
      -addoverwrite Bitmap128.bmp, BITMAP,128,
      -addoverwrite Bitmap129.bmp, BITMAP,129,0
      -addoverwrite MainIcon.ico, ICONGROUP,MAINICON,0

rh_script_myprog_upd_all.txt -

      // Этот скрипт заменяет все ресурсы
      // в MyProg.exe всеми ресурсами
      // из MyProgNew.res
      [FILENAMES]
      Exe=    MyProg.exe
      SaveAs= MyProg_Updated.exe
      [COMMANDS]
      -delete  ,,,            //удалить все ресурсы, прежде чем...
      -add MyProgNew.res ,,,  //добавить новые ресурсы

### "Упакованные" или "сжатые" исполняемые файлы:

Некоторые исполняемые файлы "упакованы" или "сжаты" различными алгоритмами сжатия. Это не только уменьшает размер файла, но и немного затрудняет просмотр и изменение ресурсов. Я думаю, что это "скрытие" ресурсов является (или было) основной целью этого действия. Из уважения к этим авторам, я не стал внедрять функционал распаковки, подобных ресурсов, в Resource Hacker. Похоже, что "упакованные" исполняемые файлы стали более редки в последние 10 лет, и авторы программного обеспечения предоставляют больше, а не меньше информации в исполняемых ресурсах. Я полагаю, что прежние опасения по поводу потери интеллектуальной собственности, при реверс-инжиниринге, развеяны.

### Условия лицензионного соглашения

Это программное обеспечение Resource HackerTM распространяется как бесплатное программное обеспечение, при условии, что вы соглашаетесь со следующими положениями и условиями:
• Это программное обеспечение не должно распространяться через какой-либо веб-сайт или любые другие носители, без предварительного письменного разрешения владельца авторских прав.
• Это программное обеспечение не должно использоваться для незаконного изменения программного обеспечения.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: пользователь этого программного обеспечения Resource HackerTM подтверждает, что он или она получает это программное обеспечение на условиях "как есть", и что пользователь не полагается на точность или функциональность программного обеспечения для каких-либо целей.
Пользователь также признаёт, что любое использование этого программного обеспечения будет осуществлять на свой страх и риск, и владелец авторских прав не несёт никакой ответственности, связанной с использованием или применением программного обеспечения.
Вышеупомянутые условия лицензии представляют собой "информацию об управлении авторскими правами" по смыслу параграфа 1202 Раздела 17 Кодекса США и не могут быть изменены или удалены из лицензионных продуктов. Их изменение или удаление, а, также, распространение лицензированных продуктов без всех вышеуказанных условий лицензии, в неизменном виде, противоречит параграфу 1202 и влечёт за собой гражданские и/или уголовные последствия.

### Загрузить версию 5.2.8:

EXE install (4.1MB)
ZIP install (3.3MB)

### Изменения в версии 5.2.8:

- Исправлена ошибка компиляции элементов управления с ID -1 в DialogEx.

### Изменения в версии 5.2.7:

- исправлены мелкие ошибки в скриптах командной строки