我正在编写一个 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。
最佳答案
您可以手动执行此操作,方法是获取 DLL,将要存储的数据附加到其中,然后是一个包含附加数据大小(以字节为单位)的 4 字节整数。
现在,如果你想读取数据,读取文件的最新 4 个字节,将其解释为整数(观察字节顺序),然后从文件末尾读取该字节数(如果bytes 是你从 END - N - 4
到 END - 4
读取的 N。
关于python - 将字符串作为资源嵌入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820616/