如何将 std::string 转换为 LPVOID

How to convert std::string to LPVOID

我需要将 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;
}

output : e_magic : 5a4d string buffer : 00B53A50

e_magic正确。