欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Resource Hacker 汉化版图文使用教程

程序员文章站 2022-04-13 21:28:07
Resource Hacker 汉化版图文使用教程...

resource hacker汉化版是一个专业的资源编辑工具,大家经常使用它编译、查看、反编译以及再编译 32 位和 64 位 windows 可执行文件的资源。resource hacker(tm) 可以打开任意类型的 windows 可执行文件 (*.exe、*.dll、*.scr、*.mui 等等),因此,可以添加、修改、或删除这些文件内的单独资源。resource hacker(tm) 可以创建和编译资源脚本文件 (*.rc),也可以编辑资源文件 (*.res)。

本文为您提供了resource hacker汉化版使用教程,以下教程来自ource hacker汉化版内置的帮助文件,欢迎阅读。

Resource Hacker 汉化版图文使用教程


编译:

编译可以通过资源脚本文件作为参数以命令行(见下文)的方式进行,也可以使用 resource hacker 的文本编辑器进行。
支持的编译器指令包括: #define、#undef、#if、#elif、#else、#ifdef、#ifndef、#include、以及 #pragma。
资源语句中的字串以双引号(")字符定义。这些字串也可包含典型“c”风格带有反斜杠“escaped”字符 ? \t , \n , \\ , \" , 以及 \000 .. \377 (八进制)。通过反斜杠或其他双引号字符来处理,字串中的双引号可以被“escaped”。
脚本注释通过双前斜杠(//)或分号(;)来处理。
资源语句内的文件名只能作为字串解析,因此它们必须由双引号字串封闭,否则会提高编译错误。
完整的资源定义语句列表可在此查阅。

Resource Hacker 汉化版图文使用教程

查看资源:一旦打开了文件,大多数资源将被显示为图像(或图像组),或显示为反编译后的文本:

Resource Hacker 汉化版图文使用教程
 

Resource Hacker 汉化版图文使用教程

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

Resource Hacker 汉化版图文使用教程

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

Resource Hacker 汉化版图文使用教程

使用内部编辑器来修改基于文本的资源:

使用内部资源编辑器,可以轻松编辑和重新编译对话框、菜单、字串表、消息表、快捷键和 borland 窗体资源

Resource Hacker 汉化版图文使用教程

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

“对话编辑器”可以从右击预览对话显示的弹出菜单中打开,“控件编辑器”可以从选定控件的同一菜单中打开。

Resource Hacker 汉化版图文使用教程

Resource Hacker 汉化版图文使用教程

也可以添加新控件。“控件编辑器”支持可能的所有 microsoft 当前定义的标准和通用的控件类。通过谨慎编辑 resource hacker(tm) 相同文件夹下的“dialog.def”文件,用户定义的自定义类也可以添加到类的预定义列表中。工具栏按钮允许选择绝大部分使用的控件。新添加的控件的左上角将默认指向对话被最初右击的地方。

替换图像:
如果要被替换的资源项是图标、指针、或位图,来源可以分别是 *.ico、*.cur 或 *.bmp 文件,或者从某个 *.res 或另一个 *.exe 文件中选择。从菜单中选择“操作|替换图标”(指针或位图)。

Resource Hacker 汉化版图文使用教程

命令行脚本:
所有 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 ,,, //添加所有新的资源

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

相关标签: Resource Hacker