首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将std::string转换为LPVOID

如何将std::string转换为LPVOID
EN

Stack Overflow用户
提问于 2017-11-26 21:28:47
回答 1查看 814关注 0票数 1

我需要将std::string转换为LPVOID以创建PIMAGE_DOS_HEADER。

我已经测试了一些铸造,但我的PE头是不正确的。

代码语言:javascript
运行
复制
std::ifstream file;
file.open("C:/testDLL.enc");
std::string data;
file >> data;
file.close();;

std::string decrypted = decrypt(data);

LPVOID lpData = static_cast<LPVOID>(&decrypted[0]);

//LPVOID lpData = reinterpret_cast<LPVOID>((char*)decrypted.c_str());
//LPVOID lpData = (char*)decrypted.c_str();

PIMAGE_DOS_HEADER pDH = (PIMAGE_DOS_HEADER)lpData;

谢谢你帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-26 22:12:45

代码语言:javascript
运行
复制
string decryptempty(string data)
{
    // I dont know your decrypt & encrypt functions..

    return string(data);
}
int main() {
    std::ifstream file;
    file.open("C://testDLL.dll",ios::binary); 
    std::string data;
    file >> data;
    file.close();

    string decryptedstr = decryptempty(data);
    LPVOID ptr = &decryptedstr[0];
    PIMAGE_DOS_HEADER pDos = reinterpret_cast<PIMAGE_DOS_HEADER>(ptr);

    printf("e_magic : %02x\n", pDos->e_magic);
    printf("string buffer : %p\n", ptr);
    getchar();
    return 0;
}

输出: e_magic : 5a4d字符串缓冲区: 00B53A50

e_magic正确。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47501206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档