Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool set_memory(unsigned char* address, void* data, unsigned int size)
- {
- MEMORY_BASIC_INFORMATION mbi;
- if (VirtualQuery(address, &mbi, sizeof(MEMORY_BASIC_INFORMATION)) != sizeof(MEMORY_BASIC_INFORMATION))
- return false;
- if (!mbi.Protect || (mbi.Protect & PAGE_GUARD))
- return false;
- unsigned long protection = 0;
- if (!(mbi.Protect & PAGE_EXECUTE_READWRITE))
- if (!VirtualProtect(mbi.BaseAddress, mbi.RegionSize, PAGE_EXECUTE_READWRITE, &protection))
- return false;
- memcpy(address, data, size);
- return (protection ? VirtualProtect(mbi.BaseAddress, mbi.RegionSize, protection, &protection) != FALSE : true);
- }
- void language_codepage_spoof()
- {
- HMODULE kernel_lib = GetModuleHandle("KERNELBASE.DLL");
- if (!kernel_lib)
- kernel_lib = GetModuleHandle("KERNEL32.DLL");
- set_memory(reinterpret_cast<unsigned char*>((DWORD)GetProcAddress(kernel_lib, "GetACP")), "\xB8\xB5\x03\x00\x00", 5); /* 0x3A4 = JMS | 0x3B5 = KMS */
- set_memory(reinterpret_cast<unsigned char*>((DWORD)GetProcAddress(kernel_lib, "GetSystemDefaultLangID")), "\xB8\x11\x04\x00\x00\xC3", 6); /* 0x411 = JMS | 0x412 = KMS */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement