BIN-файл к ресурсам моего исполняемого файла, а затем загрузить его из ресурсов вместо аргумента argv, например: "loader.exe some.bin". Мне нужно сделать это внутри exe, не помещая файл на диск, вот код, который я сейчас использую :
LPSTR finalShellcode = NULL, data = NULL;
DWORD finalSize, dataSize;
DWORD dwOldProtect1 = 0;
SYSTEM_INFO sysInfo;
HMODULE test = LoadLibraryA("User32.dll");
if (argc < 2) {
return 0;
}
if (!GetFileContents(argv[1], &data, dataSize)) {
return 0;
}
if (data[0] == 'M' && data[1] == 'Z') {
if (!ConvertToShellcode(data, dataSize, HashFunctionName("SayHello"), "dave", 5, SRDI_CLEARHEADER, finalShellcode, finalSize)) {
return 0;
}
А вот и функция GetFileContents:
DWORD GetFileContents(LPCSTR filename, LPSTR *data, DWORD &size)
{
std::FILE *fp = std::fopen(filename, "rb");
if (fp)
{
fseek(fp, 0, SEEK_END);
size = ftell(fp);
fseek(fp, 0, SEEK_SET);
*data = (LPSTR)malloc(size + 1);
fread(*data, size, 1, fp);
fclose(fp);
return true;
}
return false;
}
Я пытаюсь сделать файл BIN похожим на данные RC, но без решения я не знаю, как я могу встроить .bin в ресурс, а затем загрузить его непосредственно из ресурсов. Любые идеи, какая-либо помощь? большое спасибо
теперь я добавляю test.bin как RCDATA с именем IDR_RCDATA1:
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hResource = FindResource(hModule, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA); // substitute RESOURCE_ID and RESOURCE_TYPE.
HGLOBAL hMemory = LoadResource(hModule, hResource);
DWORD dwSize = SizeofResource(hModule, hResource);
LPVOID lpAddress = LockResource(hMemory);
char *bytes = new char[dwSize];
но я не знаю, как заставить это работать ...
A также читается: Как загрузить пользовательский двоичный ресурс в статической библиотеке VC ++ как часть библиотеки DLL? , но без решения