我正在编写一个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。
答案 0 :(得分:1)
您可以手动执行此操作,方法是获取DLL,将要存储的数据附加到其中,然后再添加一个4字节的整数,其中包含附加数据的大小(以字节为单位)。
现在,如果要读取数据,请读取文件的最新4个字节,将其解释为整数(监视字节顺序),并从文件末尾读取该字节数(如果从END - N - 4
到END - 4
读取的字节数为N.
答案 1 :(得分:0)
愚蠢的我,我只需要使用STRINGTABLE结构,而不只是转换为原始字符串。