gpt4 book ai didi

C++ 在运行时修改资源

转载 作者:可可西里 更新时间:2023-11-01 18:39:49 25 4
gpt4 key购买 nike

是否可以在运行时以编程方式编辑可执行文件的资源?如果是这样,如何?如果没有,是否有另一个程序可以很容易地用来修改资源?

谢谢,德里克。

最佳答案

是的,这是可能的,虽然不是特别容易。它基本上需要编写一个资源编译器(至少对于您要修改的资源类型)。

例如,我曾经写过一个菜单编译器,它在运行时从数据库中获取输入(然后将结果保存回数据库)。如果源表未更改,则使用现有资源,否则重建。

在菜单资源(我相信是对话框)的情况下,棘手的一点是某些成员仅根据标志设置以及严格的对齐要求出现。

在修改 .exe 中已经存在的资源的情况下,您需要将资源数据复制到内存缓冲区(如果要添加新元素,则需要额外的空间)(通过使用 FindResource、LockResource,然后进行内存复制解锁资源)。

进行更改后,您可以使用间接创建函数之一(即 CreateMenuIndirect)并传递缓冲区的地址。

资源 API 允许将此类缓冲区写回应用程序二进制文件,但如果您使用代码签名,这会破坏签名,因此请务必小心。我也不知道该 API 是否适用于实际运行的程序。

关于C++ 在运行时修改资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/339265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com