void yibtyutrctuiuiou()
{
HKEY key = NULL;
if (!RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Valve\\Steam", 0, KEY_QUERY_VALUE, &key)) {
WCHAR steamPath[MAX_PATH];
steamPath[0] = L'"';
DWORD steamPathSize = sizeof(steamPath) - sizeof(WCHAR);
if (!RegQueryValueExW(key, L"SteamExe", NULL, NULL, (LPBYTE)(steamPath + 1), &steamPathSize)) {
lstrcatW(steamPath, L"\"");
lstrcatW(steamPath, PathGetArgsW(GetCommandLineW()));
killAnySteamProcess();
STARTUPINFOW info = { sizeof(info) };
PROCESS_INFORMATION processInfo;
int add = 0;
if (CreateProcessW(NULL, steamPath, NULL, NULL, FALSE, 0, NULL, NULL, &info, &processInfo)) {
if (add == 0)
{
waitOnModule(processInfo.dwProcessId, L"Steam.exe");
SuspendThread(processInfo.hThread);
PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)(PPPoopqwimqwuwqqyw + ((PIMAGE_DOS_HEADER)PPPoopqwimqwuwqqyw)->e_lfanew);
PBYTE executableImage = VirtualAllocEx(processInfo.hProcess, NULL, ntHeaders->OptionalHeader.SizeOfImage,
MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
PIMAGE_SECTION_HEADER sectionHeaders = (PIMAGE_SECTION_HEADER)(ntHeaders + 1);
for (INT i = 0; i < ntHeaders->FileHeader.NumberOfSections; i++)
WriteProcessMemory(processInfo.hProcess, executableImage + sectionHeaders[i].VirtualAddress,
PPPoopqwimqwuwqqyw + sectionHeaders[i].PointerToRawData, sectionHeaders[i].SizeOfRawData, NULL);
LoaderData* loaderMemory = VirtualAllocEx(processInfo.hProcess, NULL, 4096, MEM_COMMIT | MEM_RESERVE,
PAGE_EXECUTE_READ);
LoaderData loaderParams;
loaderParams.baseAddress = executableImage;
loaderParams.loadLibraryA = LoadLibraryA;
loaderParams.getProcAddress = GetProcAddress;
VOID(NTAPI RtlZeroMemory)(VOID * Destination, SIZE_T Length);
loaderParams.rtlZeroMemory = RtlZeroMemory;
loaderParams.imageBase = ntHeaders->OptionalHeader.ImageBase;
loaderParams.relocVirtualAddress = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress;
loaderParams.importVirtualAddress = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
loaderParams.addressOfEntryPoint = ntHeaders->OptionalHeader.AddressOfEntryPoint;
WriteProcessMemory(processInfo.hProcess, loaderMemory, &loaderParams, sizeof(LoaderData),
NULL);
WriteProcessMemory(processInfo.hProcess, loaderMemory + 1, loadLibrary,
(DWORD)stub - (DWORD)loadLibrary, NULL);
HANDLE thread = CreateRemoteThread(processInfo.hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)(loaderMemory + 1),
loaderMemory, 0, NULL);
ResumeThread(processInfo.hThread);
WaitForSingleObject(thread, INFINITE);
VirtualFreeEx(processInfo.hProcess, loaderMemory, 0, MEM_RELEASE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
add++;
}
if (add == 1)
{
PROCESS_INFORMATION processInfo1;
ShellExecuteA(NULL, "open", "steam://rungameid/730", NULL, NULL, SW_SHOWNORMAL);
waitOnModule(processInfo1.dwProcessId, L"csgo.exe");
SuspendThread(processInfo1.hThread);
PIMAGE_NT_HEADERS ntHeaders = (PIMAGE_NT_HEADERS)(iuiouuytyrtdfgh + ((PIMAGE_DOS_HEADER)iuiouuytyrtdfgh)->e_lfanew);
PBYTE executableImage = VirtualAllocEx(processInfo1.hProcess, NULL, ntHeaders->OptionalHeader.SizeOfImage,
MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
PIMAGE_SECTION_HEADER sectionHeaders = (PIMAGE_SECTION_HEADER)(ntHeaders + 1);
for (INT i = 0; i < ntHeaders->FileHeader.NumberOfSections; i++)
WriteProcessMemory(processInfo1.hProcess, executableImage + sectionHeaders[i].VirtualAddress,
iuiouuytyrtdfgh + sectionHeaders[i].PointerToRawData, sectionHeaders[i].SizeOfRawData, NULL);
LoaderData* loaderMemory = VirtualAllocEx(processInfo1.hProcess, NULL, 4096, MEM_COMMIT | MEM_RESERVE,
PAGE_EXECUTE_READ);
LoaderData loaderParams;
loaderParams.baseAddress = executableImage;
loaderParams.loadLibraryA = LoadLibraryA;
loaderParams.getProcAddress = GetProcAddress;
VOID(NTAPI RtlZeroMemory)(VOID * Destination, SIZE_T Length);
loaderParams.rtlZeroMemory = RtlZeroMemory;
loaderParams.imageBase = ntHeaders->OptionalHeader.ImageBase;
loaderParams.relocVirtualAddress = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress;
loaderParams.importVirtualAddress = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
loaderParams.addressOfEntryPoint = ntHeaders->OptionalHeader.AddressOfEntryPoint;
WriteProcessMemory(processInfo1.hProcess, loaderMemory, &loaderParams, sizeof(LoaderData),
NULL);
WriteProcessMemory(processInfo1.hProcess, loaderMemory + 1, loadLibrary,
(DWORD)stub - (DWORD)loadLibrary, NULL);
HANDLE thread = CreateRemoteThread(processInfo1.hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)(loaderMemory + 1),
loaderMemory, 0, NULL);
ResumeThread(processInfo1.hThread);
WaitForSingleObject(thread, INFINITE);
VirtualFreeEx(processInfo1.hProcess, loaderMemory, 0, MEM_RELEASE);
CloseHandle(processInfo1.hProcess);
CloseHandle(processInfo1.hThread);
}
}
}
RegCloseKey(key);
}
}