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.

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

Дополнительные возможности компилятора 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:



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