使用Resource Hacker修改dll位图资源
程序员文章站
2023-11-29 18:16:40
使用Resource Hacker修改dll位图资源...
命令行脚本有 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 是预期的。
也可以添加 borland 的 dfm 文件,而不考虑文件是否是二进制或文本格式。不管用何种方法,它们将总是作为文本格式提取。(要将文本格式的 dfm 文件转换为二进制格式,请使用 borland 的工具 convert.exe。)
所有操作或错误都将记录到“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.htm l将“用户定义”的二进制资源 (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 中(跳过任何存在的项目)
来源:(http://blog.sina.com.cn/s/blog_63f454e40100jx4l.html) - 修改dll位图资源【转】_虫虫_新浪博客
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 ,,, //添加所有新的资源
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 是预期的。
也可以添加 borland 的 dfm 文件,而不考虑文件是否是二进制或文本格式。不管用何种方法,它们将总是作为文本格式提取。(要将文本格式的 dfm 文件转换为二进制格式,请使用 borland 的工具 convert.exe。)
所有操作或错误都将记录到“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.htm l将“用户定义”的二进制资源 (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 中(跳过任何存在的项目)
来源:(http://blog.sina.com.cn/s/blog_63f454e40100jx4l.html) - 修改dll位图资源【转】_虫虫_新浪博客
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 ,,, //添加所有新的资源
上一篇: jsp实现仿QQ空间新建多个相册名称并向相册中添加照片功能
下一篇: HTML标签及ASP函数速查表