G
N
I
D
A
O
L

Resource Hacker是适用于 32 位和 64 位 Windows 应用程序的资源编辑器

资源黑客TM

...一个免费的Windows应用程序资源编译器和反编译器®

版本 5.2.8
最后更新时间:2025 年 3 月 6 日
版权所有 © 1999-2025 Angus Johnson
awj1958@gmail.com
免费软件 - 没有唠叨,没有广告,功能齐全。
下载


概述:

Resource HackerTM 是适用于 32 位和 64 位 Windows® 应用程序的资源编辑器。它既是资源编译器(用于 *.rc 文件),又是反编译器 - 支持查看和编辑可执行文件(*.exe;*.dll;*.scr;等)和已编译资源库(*.res、*.mui)中的资源。虽然 Resource Hacker 主要是一个 GUI 应用程序,但它也提供了许多选项,用于从命令行编译和反编译资源。

资源黑客



编译:

可以通过打开现有资源脚本文件来启动编译,也可以使用 Resource Hacker 的编辑器从头开始创建一个。

在此处找到 Resource-Definition Statements 的完整列表。

Resource Hacker 编译器的其他功能包括:#INCLUDE 指令(用于访问头文件中的定义语句等)可以嵌套到多个级别,#IF 和 #IFDEF 指令也可以嵌套。 #DEFINE、#UNDEF、#IF、#ELIF、#ELSE、#IFDEF、#IFNDEF、#INCLUDE 和 #PRAGMA 指令均受支持。双引号 (“) 字符之间的字符串可能包含典型的 'C' 样式反斜杠 '转义' 字符 — \t 、 \n 、 \\ 、 \” 、 \x、 \u 和 \377 (八进制)。字符串中的双引号必须使用前面的反斜杠或另一个双引号进行“转义”。脚本注释前面有双正斜杠 (//) 或分号 (;)。允许使用具有相对路径的文件名。包含空格的文件名必须用双引号字符括起来。

报告编译器错误消息,甚至 INCLUDE 语句中嵌套的错误 ...



查看和编辑资源:

打开资源文件后,其资源通常会显示为图像(或图像组)或反编译文本。二进制资源(通常是图像)不能直接使用 Resource Hacker 进行编辑,但一旦被外部图像编辑器修改,它们仍然可以非常轻松地导出和导入。(我认为复制第三方图像编辑器做得如此出色的内容没有任何好处。





Menu 和 Dialog 资源类型有自己的 WYSIWYG 设计器:





格式未知的二进制资源将显示为只读二进制文本。(如果需要,也可以以这种方式查看任何资源。



其他作:




命令行语法:

Resource Hacker 的几乎所有功能都可以从命令行访问,而无需打开 Resource Hacker GUI。
命令行说明和 Resource Hacker 脚本可以消除重复 Resource Hacker 任务所需的繁琐工作。
命令行指令是 switch 语句后跟 switch 参数的组合,如下表所述:命令行语句:


开关 参数
-打开   filename - 要修改的文件的名称。它应该是 Windows PE 文件(*.exe、*.dll 等)或已编译或未编译的资源文件(*.res 或 *.rc)
-救   通常是新文件或修改文件的文件名,但在提取多个资源时也可以是文件夹
-资源   filename - 包含要添加到打开的文件的资源。
-行动   对打开的文件执行的作
  • add - 添加资源,但如果资源已存在,则失败
  • addoverwrite - 添加资源,并覆盖资源(如果已存在)
  • addSkip - 添加资源,但如果资源已存在,则跳过
  • compile - 将资源脚本文件 (*.rc) 编译为二进制资源文件 (*.res)
  • delete - 删除资源
  • extract - 提取资源
  • modify - 修改资源
  • changelanguage(langID) - 更改所有资源的语言
-面具   资源掩码 - 类型,名称,语言
逗号是必需的,但类型、名称和语言都是可选的
-日志   文件名或 CONSOLE 或 NUL
CONSOLE 可以缩写为 CON
Logs 所执行
作的详细信息 如果省略此开关,则日志将写入 resourcehacker.log
-脚本   filename - 包含多命令脚本,而不是资源脚本,有关详细信息,请访问:-help script
-帮助   options - 命令行或脚本(始终记录到 CONSOLE)其他开关将被忽略。

笔记:
  1. 开关标识符(除了 -script)可以缩写为单个字符(例如 -res 或 -r)。
  2. Switch 指令不必按任何特定顺序排列。
  3. 包含空格的文件名必须用双引号括起来。

批处理文件示例(为简洁起见,在一些地方使用 rh.exe 而不是 ResourceHacker.exe)

reshack_help.bat:
reshack_compile_res_script.bat:
reshack_add_icon_to_old.bat:
reshack_extract_all_source_icons_to_icons_folder.bat:
reshack_extract_all_dialogs.bat:
reshack_execute_my_script.bat:
资源黑客脚本:

使用以下语法从命令行执行 Resource Hacker 脚本:


Resource Hacker 脚本是采用以下格式的文本文件:


注意:包含空格的文件名必须用双引号括起来。

Resource Hacker 脚本示例:

rh_script_myprog_rus.txt -
rh_script_myprog_upd_images.txt -
rh_script_myprog_upd_all.txt -
ResourceHacker.exe -help
@pause  :: to see the console output before the CMD window closes.
rh.exe -open .\in\resources.rc -save .\out\resources.res -action compile -log NUL
rh.exe -open old.exe -save new.exe -action addskip -res my.ico -mask ICONGROUP,MAINICON,
rh.exe -open source.exe -save .\icons -action extract -mask ICONGROUP,, -log CON
@pause
rh.exe -open source.exe -save .\dialogs.rc -action extract -mask DIALOG,, -log rh.log
ResourceHacker.exe -script myscript.txt
  ResourceHacker.exe -script ScriptFile
  //comments are preceded by double slashes
  [FILENAMES]
  Open=
  Save=
  Log=
  [COMMANDS]
  //one or more of the following commands ...
  -add          SourceFile, ResourceMask
  -addskip      SourceFile, ResourceMask
  -addoverwrite SourceFile, ResourceMask
  -addoverwrite SourceFile, ResourceMask
  -modify       SourceFile, ResourceMask
  -extract      TargetFile or TargetFolder, ResourceMask
  -delete       ResourceMask
  -changelanguage(langID)
  //This script deletes all Language Neutral (0)
  //string-table, menu and dialog resource items
  //in MyProg.exe before replacing them
  //with Russian (1049) items...	
  [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
  //This script updates 2 bitmaps and an
  //icon in 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
  //This script replaces all resources
  //in MyProg.exe with all the resources
  //in MyProgNew.res	
  [FILENAMES]
  Exe=    MyProg.exe
  SaveAs= MyProg_Updated.exe
  [COMMANDS]
  -delete  ,,,            //delete all resources before...
  -add MyProgNew.res ,,,  //adding all the new resources


“打包”或“压缩”可执行文件:

某些可执行文件是使用压缩算法进行“打包”或“压缩”的。这不仅会减小文件大小,还会使查看和修改资源的难度略有增加。我怀疑这个资源“隐藏”是(或曾经是)这个过程中的一个共同目标。无论如何,为了尊重这些作者,我选择不使用 Resource Hacker 解压缩文件。顺便说一句,在过去 5 到 10 年中,“打包的”可执行文件似乎已经变得相当罕见,软件作者在可执行资源中公开的信息更多而不是更少。我怀疑之前对逆向工程会丢失知识产权的担忧已经得到缓解。


使用许可 - 条款和条件:

本 Resource HackerTM 软件作为免费软件发布,前提是您同意以下条款和条件:
  1. 本软件不得通过任何网站域或任何 未经版权所有者事先书面许可的其他媒体。
  2. 不得以任何方式利用本软件进行非法修改。
免责声明:本 Resource HackerTM 软件的用户承认他或她是按“原样”接收本软件,并且用户不会出于任何目的依赖本软件的准确性或功能。用户进一步承认,使用本软件的风险将由用户自行承担,版权所有者不承担因使用或应用本软件而产生的任何责任。

上述许可条款构成美国法典第 17 篇第 1202 节所指的“版权管理信息”,不得从许可作品中更改或删除。更改或从许可作品中删除这些作品,以及在没有上述所有许可条款的情况下原封不动地分发许可作品,可能违反第 1202 条并引起民事和/或刑事后果。



下载版本 5.2.8:

EXE 安装 (4.1MB)

ZIP 安装 (3.3MB)


5.2.8 中的更改:
  • 修复了在 DialogEx 中编译 ID 为 -1 的控件的错误
5.2.7 中的更改:
  • 修复了命令行脚本中的小错误
5.2.6 中的更改:
  • 修复了错误检测文本编码的错误
  • 修复了其他几个小错误
posted @ 2025-04-29 03:30  firespeed  阅读(67)  评论(0)    收藏  举报