2017-11-26 9 views
0

作成するPIMAGE_DOS_HEADERのためにstd :: stringをLPVOIDに変換する必要があります。std :: stringをLPVOIDに変換する方法

すでにキャスティングをテストしましたが、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; 

ありがとうございます。

+0

このような基本的なまたはより良い基本的な質問は、重複している可能性があります。あなたはあなたのポインタを得たので、https://stackoverflow.com/review/first-posts/18069038 – Harry

+0

をチェックしましたか?あなたの質問は何ですか?あなたがどんな問題を抱えているかは不明です。 – Ivan

+0

PIMAGE_DOS_HEADERが壊れています。 ReadfileでlpDataをうまく利用しているとき – RequireBool

答えて

-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; 
} 

出力:e_magic:5a4d列バッファ:00B53A50

e_magic正しいです。

+0

実際には、私はデコードされたデータをファイルに書き込んで、安全のためにファイルを暗号化するために危険なものを取り戻すために、これを必要としません。ありがとう。 – RequireBool

関連する問題