我需要将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;
感谢您的帮助。
答案 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正确。