Resource HackerTM
... свободно распространяемый компилятор и декомпилятор ресурсов для приложений Windows®
Версия 5.2.8 (стабильный выпуск)
Последнее обновление: 6 Марта 2025
Авторское право © 1999-2025 Ангус Джонсон
awj1958@gmail.com
Бесплатная программа - без всплывающих окон, без рекламы и с полным функционалом.
Перевод: alexalsp - 2023
Страница в сети: apocalypse.moy.su
Спасибо
AltSolo за правки перевода.
Загрузить программу
Общее представление:
Resource Hacker
TM — это редактор ресурсов для 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), другие ключи игнорируются. |
Примечания:
- Идентификаторы ключей (кроме -script) могут быть сокращены до одного символа (например: -res или -r).
- Операторы ключей можно размещать в любом порядке.
- Имена файлов, содержащие пробелы, должны быть заключены в двойные кавычки.
Примеры пакетных файлов (используя 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 Hacker
TM распространяется как бесплатное программное обеспечение, при условии, что вы соглашаетесь со следующими положениями и условиями:
• Это программное обеспечение не должно распространяться через какой-либо веб-сайт или любые другие носители, без предварительного письменного разрешения владельца авторских прав.
• Это программное обеспечение не должно использоваться для незаконного изменения программного обеспечения.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: пользователь этого программного обеспечения Resource Hacker
TM подтверждает, что он или она получает это программное обеспечение на условиях "как есть", и что пользователь не полагается на точность или функциональность программного обеспечения для каких-либо целей.
Пользователь также признаёт, что любое использование этого программного обеспечения будет осуществлять на свой страх и риск, и владелец авторских прав не несёт никакой ответственности, связанной с использованием или применением программного обеспечения.
Вышеупомянутые условия лицензии представляют собой "информацию об управлении авторскими правами" по смыслу параграфа 1202 Раздела 17 Кодекса США и не могут быть изменены или удалены из лицензионных продуктов. Их изменение или удаление, а, также, распространение лицензированных продуктов без всех вышеуказанных условий лицензии, в неизменном виде, противоречит параграфу 1202 и влечёт за собой гражданские и/или уголовные последствия.
Загрузить версию 5.2.8:
EXE install (4.1MB)
ZIP install (3.3MB)
Изменения в версии 5.2.8:
- Исправлена ошибка компиляции элементов управления с ID -1 в DialogEx.
Изменения в версии 5.2.7:
- исправлены мелкие ошибки в скриптах командной строки