【发布时间】:2011-10-26 07:56:52
【问题描述】:
有没有免费的库可以为 Win32 PE 文件中的资源提供编辑功能?
它需要能够做到以下几点:
-
提供一个相当简单 API 用于更改对话框资源(包括“扩展”对话框版本,which is poorly documented)。
李>
手动使用UpdateResource编辑对话框是一个很大的麻烦,因为大多数结构的字段都是可变长度的,并且对它们进行编码/解码非常容易出错并且编码耗时。 同时处理 32 位和 64 位 PE 文件
支持广泛使用的资源类型(字符串表、位图等)
-
能够处理任何类型的有效资源(即使它没有被广泛使用),即使这意味着只提供与二进制文件的简单副本。
我不关心 .res 文件,我真的不需要 .rc 功能。我只需要PE编辑。
C、C++ 和 C# 都很好,虽然我更喜欢 C#,因为它更容易编写代码。我主要关心的是 32 位和 64 位 PE 文件的对话框编辑,所以这是最重要的因素。
【问题讨论】:
-
我已经花费了数百甚至数千小时来解码资源和 PE 格式的所有细节以创建 appTranslator(当时还不存在 SO)。现在,如果出现这样的图书馆并且可以拯救我所有那些不眠之夜,我会从桥上跳下来:-D
-
@Serge:哦,该死——我应该删除我的问题,我不希望它以某人的生命为代价,哈哈。
-
将这些库的稀疏性作为一个强烈的暗示,表明它没有那么有用。首先是当文件加载到进程中时无法编辑资源,内存映射文件对它有很强的锁定。当发现 UpdateResource 非常有限时,随之而来的是失望。最后,每个人都拥有一个触手可及的 IDE,它已经支持编辑资源。即使在PE32文件中,VS中的文件+打开+文件。希望 Serge 没有读到这篇文章。
-
@Hans:我完全了解这一切。就我而言,这完全值得付出努力:appTranslator 卖得不错,用户通常喜欢它,谢谢 ;-)
-
@Hans:哈哈。 VS(或 Resource Hacker 或其他)的问题在于它对批处理操作没有用处。很多时候,我需要对某些资源进行更改(例如全局查找/替换、全局搜索特定大小的图像),而我无法做到这一点而不会在后面造成很大的痛苦。至少,它需要导出和重新导入资源,并祈祷一切都没有搞砸。我没有用 VS 试过这个,但是用 Resource Hacker 它肯定不能扩展。除非您碰巧知道在 VS 中为此使用宏的方法,否则我找不到 VS 对此有用。 :\