如何将std :: string转换为LPVOID

时间:2017-11-26 21:28:48

标签: stdstring

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

我已经测试了一些演员,但我的PE标题是不对的。

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;

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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正确。