如何将 std::string 转换为 LPVOID
How to convert std::string to LPVOID
我需要将 std::string 转换为 LPVOID 以创建 PIMAGE_DOS_HEADER。
我已经测试了一些转换,但我的 PE Header 不正确。
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;
感谢您的帮助。
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正确。
我需要将 std::string 转换为 LPVOID 以创建 PIMAGE_DOS_HEADER。
我已经测试了一些转换,但我的 PE Header 不正确。
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;
感谢您的帮助。
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正确。