Örneğin no recoil aktif edince oyun donuyor birdahada açılmıyor bununla ilgili C++ kaynak var mı donmaması için
benim kullandığım :
benim kullandığım :
Kod:
DWORD GetAddressFromSignature(std::vector<int> signature, DWORD startaddress = 0, DWORD endaddress = 0) {
SYSTEM_INFO si;
GetSystemInfo(&si);
if (startaddress == 0) {
startaddress = (DWORD)(si.lpMinimumApplicationAddress);
}
if (endaddress == 0) {
endaddress = (DWORD)(si.lpMaximumApplicationAddress);
}
MEMORY_BASIC_INFORMATION mbi{ 0 };
DWORD protectflags = (PAGE_GUARD | PAGE_NOCACHE | PAGE_NOACCESS);
for (DWORD i = startaddress; i < endaddress - signature.size(); i++) {
//std::cout << "scanning: " << std::hex << i << std::endl;
if (VirtualQuery((LPCVOID)i, &mbi, sizeof(mbi))) {
if (mbi.Protect & protectflags || !(mbi.State & MEM_COMMIT)) {
std::cout << "Not found! wait ... Region Base Address: " << mbi.BaseAddress << " | Region end address: " << std::hex << (int)((DWORD)mbi.BaseAddress + mbi.RegionSize) << std::endl;
i += mbi.RegionSize;
continue; // if bad adress then dont read from it
}
std::cout << "Found Recoil Code! Region Base Address: " << mbi.BaseAddress << " | Region end address: " << std::hex << (int)((DWORD)mbi.BaseAddress + mbi.RegionSize) << std::endl;
for (DWORD k = (DWORD)mbi.BaseAddress; k < (DWORD)mbi.BaseAddress + mbi.RegionSize - signature.size(); k++) {
for (DWORD j = 0; j < signature.size(); j++) {
if (signature.at(j) != -1 && signature.at(j) != *(byte*)(k + j))
break;
if (j + 1 == signature.size())
return k;
}
}
i = (DWORD)mbi.BaseAddress + mbi.RegionSize;
}
}
return NULL;
}
if (varRecoil)
{
AllocConsole();
std::cout << "" << std::endl;
if (GetAsyncKeyState(VK_F10))
{
FILE* fp;
freopen_s(&fp, "CONOUT$", "w", stdout); // output only
std::cout << "" << std::endl;
while (1) {
Sleep(100);
{
std::vector<int> sig = { 0xDC, 0x8D, 0x60, 0x00, 0x00, 0x00, 0xDD, 0x9D, 0x70, 0x00, 0x00, 0x00, 0xE8, 0x08, 0x00, 0x00, 0x00 };
DWORD Entry = GetAddressFromSignature(sig, 0x30000000, 0x50000000);
if (Entry == NULL)
Entry = GetAddressFromSignature(sig, 0x1F000000, 0x4A000000);
if (Entry == NULL)
Entry = GetAddressFromSignature(sig);
char writeThis[] = "\x90\x90\x90\x90\x90\x90\xDD\x9D\x70\x00\x00\x00\xE8\x08\x00\x00\x00";
WriteToMemory(Entry, writeThis, 4);
break;
}
fclose(fp);
FreeConsole();
int i = 0;
}
}