Resource HackerTM
版本 4.3.20 官方简体中文版
最后更新: 2016年9月11日
版权所有 (c) 1999-2016 Angus Johnson
http://www.angusj.com/resourcehacker/
免费软件 - 没有提示，没有广告，全功能版本。
官方简体中文版：吕达嵘 ldrhan@163.com
欢迎访问汉化新世纪 http://www.hanzify.org
概述:

Resource Hacker(TM) 设计为一个完整的资源编辑工具: 编译、查看、反编译以及再编译 32 位和 64 位 Windows 可执行文件的资源。Resource Hacker(TM) 可以打开任意类型的 Windows 可执行文件 (*.exe、*.dll、*.scr、*.mui 等等)，因此，可以添加、修改、或删除这些文件内的单独资源。Resource Hacker(TM) 可以创建和编译资源脚本文件 (*.rc)，也可以编辑资源文件 (*.res)。

编译：

编译可以通过资源脚本文件作为参数以命令行(见下文)的方式进行，也可以使用 Resource Hacker 的文本编辑器进行。
支持的编译器指令包括: #DEFINE、#UNDEF、#IF、#ELIF、#ELSE、#IFDEF、#IFNDEF、#INCLUDE、以及 #PRAGMA。
资源语句中的字串以双引号(")字符定义。这些字串也可包含典型“C”风格带有反斜杠“escaped”字符 ? \t , \n , \\ , \" , 以及 \000 .. \377 (八进制)。通过反斜杠或其他双引号字符来处理，字串中的双引号可以被“escaped”。
脚本注释通过双前斜杠(//)或分号(;)来处理。
资源语句内的文件名只能作为字串解析，因此它们必须由双引号字串封闭，否则会提高编译错误。
完整的资源定义语句列表可在此查阅。
查看资源：
一旦打开了文件，大多数资源将被显示为图像(或图像组)，或显示为反编译后的文本：

然而，某些资源类型将被同时显示为编译的窗体(如对话框或弹出菜单)以及反编译后的文本格式。

某些资源类型只能显示为原始字节数据的转储：

使用内部编辑器来修改基于文本的资源：
使用内部资源编辑器，可以轻松编辑和重新编译对话框、菜单、字串表、消息表、快捷键和 Borland 窗体资源

对话控件也可以可视化地改变大小和/或移动，您所作的更改将自动反映在资源脚本中。它可以自动完成屏幕像素和对话单位之间的转换。在显示的对话中单击选定某个控件。或者，Tab 或 Shift-Tab 键可以用来分别选择下一个或上一个控件。选定的控件将显示调整框。要想移动控件而不改变大小，请先选定控件，单击并将其拖动到新的位置。箭头键也可以在选定后移动控件。某个控件可以通过单击和拖动其中一个调整框来调整大小。或者，组合 shift 箭头键也可以用来调整控件。
“对话编辑器”可以从右击预览对话显示的弹出菜单中打开，“控件编辑器”可以从选定控件的同一菜单中打开。

也可以添加新控件。“控件编辑器”支持可能的所有 Microsoft 当前定义的标准和通用的控件类。通过谨慎编辑 Resource Hacker(TM) 相同文件夹下的“dialog.def”文件，用户定义的自定义类也可以添加到类的预定义列表中。工具栏按钮允许选择绝大部分使用的控件。新添加的控件的左上角将默认指向对话被最初右击的地方。
替换图像：
如果要被替换的资源项是图标、指针、或位图，来源可以分别是 *.ico、*.cur 或 *.bmp 文件，或者从某个 *.res 或另一个 *.exe 文件中选择。从菜单中选择“操作|替换图标”(指针或位图)。

命令行脚本：
所有 Resource Hacker(TM) GUI 的功能(除了查看资源)都可以从命令行来访问，而不用打开 Resource Hacker(TM)。命令行脚本可以去掉运行 Resource Hacker(TM) 重复任务的苦差事。
命令行脚本有 2 个通用的窗体：

1. 单命令：ResHacker.exe 命令 命令_参数
2. 多命令：ResHacker.exe -脚本 脚本文件

单命令：
命令和命令_参数：
-add ExeFile, SaveAsFile, ResourceFile, ResourceMask
-addskip ExeFile, SaveAsFile, ResourceFile, ResourceMask
-addoverwrite ExeFile, SaveAsFile, ResourceFile, ResourceMask
-modify ExeFile, SaveAsFile, ResourceFile, ResourceMask
-extract ExeFile, ResourceFile, ResourceMask
-delete ExeFile, SaveAsFile, ResourceMask
注意：
每个命令参数必须由逗点分隔，但第一个参数之前不要有逗点。
路径应该包括文件名。
文件名包含空格应括在双引号内。
ResourceMask 允许用命令来执行单个或多个资源项并获得窗体 ResType、ResName、ResLang。(如果 ResType 是一个预定义的类型，那么其编号或标识符都可以使用。如 ResourceMask dialog,128,0 与 5,128,0 是一样的。)可以省略一部分或所有的 ResourceMask 项。如 dialog,, 说明一下，所有对话都将被应用到命令中，而不考虑名称或语言。并且，,,1049 表示所有含 Russian (1049) 和资源都将应用到命令中。一个空的 ResourceMask ,, 表示命令将应用到每个资源中，而不考虑类型、名称或语言。
当添加或修改项目时，ResourceFile 可以是任何项目类型的 RES 文件、BITMAP 类型的 BMP 文件、CURSORGROUP 类型的 CUR 文件、ICONGROUP 类型的 ICO 文件、以及 RCDATA 和用户定义资源类型的任何文件类型。
从文件而不是从 RES 文件中添加和修改资源时，ResType 和 ResName 必须在 ResourceMask 中指定。如果忽略了 ResLang，那么命令将以匹配的类型和名称应用到第一个语言项中。否则，如果没有匹配项存在，则假设语言为中性(0)。
在提取资源时，ResourceMask 默认超过一个项目，那么指定的 ResourceFile 必须是一个 RES 文件或 RC 文件。将二进制图像资源提取到 RC 文件中时，也会将每个图像创建为一个单独的二进制文件(ico、cur、bmp、gif、bin)。请看下面的例子。
不能直接操作 ICON 和 CURSOR 资源，除了通过使用其各自的 ICONGROUP 或 CURSORGROUP 来添加、删除、修改、以及提取。ICON 和 CURSOR 仍然可以使用，但 Resource Hacker(TM) 将假定 ICONGROUP 或 CURSORGROUP 是预期的。
所有操作或错误都将记录到“ResHacker.log”中。
注意：如果一个脚本未产生期望的结果就请检查日志！
举例：(已经忽略文件路径，有助于理解)
要从 UpdDlg.res 添加或更新 MyProg.exe 中的对话名称：maindlg lang:0
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, UpdDlg.res, dialog,maindlg,0
要从 NewImage.bmp 添加或更新 MyProg.exe 中的位图名称：128
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, NewImage.bmp , bitmap,128,
要从 Images.res 添加或更新 MyProg.exe 中的所有位图
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, Images.res, bitmap,,
要从 ReadMe.html 将“用户定义”的二进制资源 (README,1,0) 添加到 MyProg.exe 中
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, ReadMe.html, readme,1,0
要将 Images.res 中的所有项目添加到 MyProg.exe 中(但如果有任何项目存在就会失败)
ResHacker.exe -add MyProg.exe, MyProgNew.exe, Images.res ,,,
要将 Images.res 中的所有项目添加到 MyProg.exe 中(跳过任何存在的项目)
ResHacker.exe -addskip MyProg.exe, MyProgNew.exe, Images.res ,,,
要以 Images.res 中的项目修改 MyProg.exe 中的所有项目 (忽略 Images.res 中的任何项目，其不存在于 MyProg.exe 中)
ResHacker.exe -modify MyProg.exe, MyProgNew.exe, Images.res , , ,
要从 MyProg.exe 中将所有图标提取到 myprogicons.rc (创建 MyProgIcons.rc、Icon_1.ico、Icon_2.ico、Icon_3.ico 等等...)
ResHacker.exe -extract MyProg.exe, MyProgIcons.rc, icongroup,,
要从 MyProg.exe 中删除 GIF 名称:128
ResHacker.exe -delete MyProg.exe, MyProgNew.exe, gif,128,
多命令：
语法：ResHacker.exe -script 脚本文件
脚本文件是一个文本文件，有下列格式：

//注释前加上双斜杠
[FILENAMES]
Exe=
SaveAs=
Log=
[COMMANDS]
-add ResourceSrc, ResourceMask
-addskip ResourceSrc, ResourceMask
-addoverwrite ResourceSrc, ResourceMask
-addoverwrite ResourceSrc, ResourceMask
-modify ResourceSrc, ResourceMask
-extract ResourceTgt, ResourceMask
-delete ResourceMask
如果忽略日志，那么将使用默认日志 - ResHacker.log。
注意：如果一个脚本未产生期望的结果就请检查日志！
举例：
rh_script_myprog_rus.txt -
//在以 Russian(1049) 项目替换它们之前，
//该脚本将删除 MyProg.exe 中的所有语言中性(0)
//的字串表、菜单和对话资源项...
[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 -
//该脚本在 MyProg.exe 中更新 2 个位图和一个图标...
[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 -
//该脚本以 MyProgNew.res 中的所有资源
//替换 MyProg.exe 中的所有资源
[FILENAMES]
Exe= MyProg.exe
SaveAs= MyProg_Updated.exe
[COMMANDS]
-delete ,,, //在...之前删除所有资源
-add MyProgNew.res ,,, //添加所有新的资源

使用许可 - 条款和条件:

Resource Hacker(TM) 软件是作为免费软件发布的，您必须同意以下条款和条件：
1、没有版权所有者预先的同意，本软件不能通过任何网站域或其他任何媒体发布。
2、本软件不能以任何方式非法修改软件后使用。
免责声明：在有关法律许可范围内，本软件 Resource Hacker(TM)“按现状”提供，不作任何明确或隐含保证，包括但不限于隐含适销性保证、特殊用途适用性保证或非侵犯保证。本软件连同其所有缺陷一道提供，您对质量、性能、准确性及操作等方面之满意程度自行承担风险。

可执行文件打包

为了减少程序的体积，某些应用程序在编译后被 EXE 压缩器“打包”或“压缩”。这种情况下，要查看和修改资源是非常困难的。当然，逆向工程后仍可以查看和修改资源，但我决定不那么做，这会对软件作者不尊重。用 Resource Hacker(TM) 查看一个“压缩”的可执行程序时，只有资源类型和名称可以看到，而不是实际的资源。