2017-11-26 2 views
0

Ich brauche konvertieren std :: string zu LPVOID für create PIMAGE_DOS_HEADER.Wie konvertiert man std :: string zu LPVOID

Bereits habe ich einige Casting getestet, aber meine PE Header ist nicht richtig.

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; 

Danke für Hilfe.

+0

solche grundlegenden oder besseren grundlegenden Fragen unterliegen Duplikate, z. Hast du https://StackOverflow.com/Review/first-posts/18069038 – Harry

+0

überprüft So hast du deinen Zeiger. Was ist deine Frage? Es ist unklar, welches Problem Sie haben. – Ivan

+0

Mein PIMAGE_DOS_HEADER ist defekt. wenn ich lpData mit ReadFile nehme funktioniert es gut – RequireBool

Antwort

-1
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-Puffer: 00B53A50

e_magic korrekt.

+0

Eigentlich brauche ich das nicht, wenn ich meine dekodierten Daten in Datei schreibe und sie für mich zurückbringe. Vielen Dank. – RequireBool

Verwandte Themen