windows - 可编写脚本的 PE 资源编辑器

标签 windows portable-executable resource-editor

我需要一个命令行工具,它支持从 PE 可执行文件的资源中检索版本信息,并用新版本修补二进制文件。我需要做的是自动增加 P​​E 二进制文件的版本。

有什么想法吗?

最佳答案

资源工具库[ 1 , 2 ] 与 COM 接口(interface)。您可以从 VBScript/JScript 使用它,并像我已经做的那样自动修补版本信息。

导入/浏览 DLL 类型库以查看 COM 接口(interface)语法,下面是 VersionInfo 修补自动化的代码片段。

WshShell = WScript.CreateObject("WScript.Shell");
WScript.Echo("Current Directory: " + WshShell.CurrentDirectory);
Image = new ActiveXObject("AlaxInfo.ResourceTools.Image");
Image.Initialize(WshShell.CurrentDirectory + "\\Sample.dll");
WScript.Echo("Product Version: " + Image.VersionInfo.ProductVersionString);
WScript.Echo("File Version: " + Image.VersionInfo.FileVersionString);

VersionString = Image.VersionInfo.FileVersionString;
VersionString = VersionString.replace(" ", "");
VersionString = VersionString.replace(",", ".");
if(/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/i.exec(VersionString) == null)
  throw "Incorrect version string";
V1 = new Number(RegExp.$1);
V2 = new Number(RegExp.$2);
V3 = new Number(RegExp.$3);
V4 = new Number(RegExp.$4);
WScript.Echo("File Version Components: " + V1 + ", " + V2 + ", " + V3 + ", " + V4);
V4++;
VersionString = V1 + "." + V2 + "." + V3 + "." + V4;
WScript.Echo("New File Version: " + VersionString);

Image.VersionInfo.SetFileVersion(V1 * 65536 + V2, V3 * 65536 + V4);
Image.VersionInfo.SetString(0, "FileVersion", VersionString);
Image.VersionInfo.Update();
Image.EndUpdate(false);

库基本上是BeginUpdateResource 的包装器功能和 friend 为您提供自动化接口(interface),不仅可以修补数字,还可以修补其他版本信息组件、字符串、位图。

关于windows - 可编写脚本的 PE 资源编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14378798/

相关文章:

hex - 为什么PE文件中的MZ DOS Header Signature是0x54AD?

c++ - VS2017 是否允许在 C++ 项目的可视化对话框编辑器中更改控件的 Tab 键顺序?

windows - 以编程方式在注册表中注册性能计数器

c# - 有没有办法在不使用 COM 的情况下在 C# 中以编程方式遵循 Windows 文件系统快捷方式?

c++ - 列出 DLL 的导出函数

c# - 如何获得总 CPU 使用率(所有进程)? (C#)

windows - 如何从页眉和/或页脚确定 PE 可执行文件的大小

C 程序在编译和链接后生成包含 edata 部分的 EXE 文件?

wpf 图片资源和visual studio 2010 资源编辑器