如何将 std::string 转换为 LPVOID

RequireBool

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

我已经测试了一些转换,但我的 PE Header 不正确。

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;

感谢您的帮助。

左空间
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 正确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章