嵌入字符串作为资源

时间:2011-04-28 14:56:05

标签: python c windows string resources

我正在编写一个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。

2 个答案:

答案 0 :(得分:1)

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

现在,如果要读取数据,请读取文件的最新4个字节,将其解释为整数(监视字节顺序),并从文件末尾读取该字节数(如果从END - N - 4END - 4读取的字节数为N.

答案 1 :(得分:0)

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