将字符串嵌入为资源

发布于 2024-11-04 02:05:47 字数 581 浏览 1 评论 0原文

我正在编写一个 DLL,并且我想在编译后向其中添加一些字符串作为嵌入式资源。

为此,我使用类似于以下内容的 Python 脚本:

hRes = win32api.BeginUpdateResource(myFile, 0)
win32api.UpdateResource(hRes, win32con.RT_STRING, 409, buf, 1033)
win32api.EndUpdateResource(hRes, 0)

这似乎有效,我可以使用十六进制编辑器查看 PE 中的字符串。

当我的 Dll 尝试使用 LoadString() 拉回该字符串时,就会出现问题。

该调用类似于:

LoadString(myDll, 409, someBuf, lenOfBuf);

我的程序似乎在 LoadString() 调用中取消引用了一个错误的指针。

我的问题在于如何添加或拉出字符串吗?谁能指出我执行这两个步骤的示例代码?

编辑:我更愿意为此使用 Win32 API。

I'm writing a DLL, and I would like to, post-compilation, add some strings to it as an embedded resource.

To do that, I'm using a Python script that looks similar to the following:

hRes = win32api.BeginUpdateResource(myFile, 0)
win32api.UpdateResource(hRes, win32con.RT_STRING, 409, buf, 1033)
win32api.EndUpdateResource(hRes, 0)

And that appears to work, I can see the strings in the PE with my hex-editor.

The problem occurs when my Dll tries to use LoadString() to pull that string back out.

The call is something like:

LoadString(myDll, 409, someBuf, lenOfBuf);

And my program is appearing to de-reference a bad pointer in the LoadString() call.

Does my problem lie with how I'm adding the string, or pulling it out? And can anyone point me towards example code that does both steps?

Edit: I'd prefer to use the Win32 APIs for this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

茶花眉 2024-11-11 02:05:47

您可以手动执行此操作,方法是获取 DLL,将要存储的数据附加到其中,并在其后添加一个 4 字节整数,其中包含附加数据的大小(以字节为单位)。

现在,如果要读取数据,请读取文件的最新 4 个字节,将其解释为整数(观察字节顺序),然​​后从文件末尾读取该字节数(如果字节数为 N您从 END - N - 4 读取到 END - 4)。

You can do it manually, by taking the DLL, appending the data you want to store to it, and after it a 4byte integer containing the size of the appended data in bytes.

Now, if you want to read the data, read the latest 4 bytes of the file, interpret it as an integer (watch byte order), and read that amount of bytes from the end of the file (if the amount of bytes is N you read from END - N - 4 to END - 4).

爱你是孤单的心事 2024-11-11 02:05:47

愚蠢的我,我只需要使用 STRINGTABLE 结构,而不是仅仅转储原始字符串。

Silly me, I just needed to use the STRINGTABLE structure instead of just dumping in raw strings.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文