各位开发者您好,
我正在尝试在 Windows 上映射一个可执行的二进制文件,然后执行映射的文件。
到目前为止,我使用CreateFileMapping
和管理映射MapViewOfFile
。这些函数给了我一个映射文件的句柄和一个指向映射数据的指针,但我不知道如何执行映射的二进制文件。我想我应该使用这个CreateProcess
函数,但它应该作为参数给出什么?
char *binaryPath = "C:/MyExecutable.exe";
// Get the binary size
std::fstream stream(binaryPath, std::ios::in | std::ios::binary);
stream.seekg(0, std::ios::end);
unsigned int size = stream.tellg();
// Create a mapped file in the paging file system
HANDLE mappedFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READ, 0, size, NULL);
// Put the executable data into the mapped file
void* mappedData = MapViewOfFile(mappedFile, FILE_MAP_READ | FILE_MAP_EXECUTE, 0, 0, size);
stream.read((char*)mapping, size);
stream.close();
// What should I do now ?