Search code examples
stdstring

How to convert std::string to LPVOID


I need convert std::string to LPVOID for create PIMAGE_DOS_HEADER.

Already i have tested some casting but my PE Header isn't right.

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;

Thanks for helps.


Solution

  • 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 correct.