Категории

  • Всяческие новости ресурса и прочие анонсы

    3 Темы
    3 Сообщения
    StoneWeaverS

    Всем привет! Наконец-то у меня дошли руки обновить версию движка форума. Движок обновлён до самой актуальной. Если заметите какие-либо ошибки, пишите в разделе обратной связи.

  • Статьи, уроки, вопросы-ответы для начинающих геймхакеров

    61 Темы
    257 Сообщения
    Partizan1078P

    Совсем забыл что обещал поковыряться.
    Какая версия была уже не помню. Но вроде последняя.
    Из интерсного наверно только NoClip.

    ZombieDriverHD.7z

  • Статьи, уроки, вопросы-ответы для среднего уровня и выше

    13 Темы
    86 Сообщения
    W

    @LIRW Спасибо за ответ! Я к удивлению копался в этом месте. Там из интересного - это только максимальное количество(24) крестьян у костра, и id юнита(крестьянин) выходящего из донжона, которые можно менять в угоду балансу. Но они по моему не коррелируют с счетчиком населения в книжке внизу.

  • Вопросы по взлому игр и ответы на них

    26 Темы
    178 Сообщения
    F

    Добрый день!
    Есть игра, в которой я написал бота (твиновода). Он работает хорошо, за исключением вылетов.

    Вылеты не привязаны к действиям персонажей. Бот может проработать 5 минут, а может несколько часов. В отладчике я поймал момент вылета, там по стеку вызовов вообще не моя функция и не мой id потока. Судя по всему вылетает сама игра из за внедрения кода. Но на античит я не думаю, потому что я создавал свой сервер с чистой версией клиента - тоже самое.

    Сейчас мой код устроен так: я выделяю память в процессе, записываю туда мой код, запускаю поток и жду его завершения.
    Для завершения потока я пробовал использовать сначала RET, затем нашел функцию ExitThread в процессе. Разницы никакой - и так и так вылетает одинаково.

    Еще заметил нюанс, что на более слабом ПК вылеты происходят чаще.

    У меня вот предположение, что может быть проблема решится, если я не буду создавать свой поток, а буду использовать игровой. То есть, использовать JMP на адрес моего кода, затем возвращаться обратно. Только я не понимаю как это реализовать. Какой поток надо найти чтобы так сработало? Я не понимаю, помогите!

    Вот код C++:

    bool ProcessReader::sendPacket(size_t size, void* packetData) { if (GameSession == 0) { std::cout << u8"GameSession не установлен.\n"; return false; } DWORD processId = pid; if (processId == 0) { std::cout << u8"Не удалось найти процесс ElementClient.exe." << std::endl; return false; } LPVOID remotePacketData = VirtualAllocEx(hProcess, NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (!remotePacketData) { std::cout << u8"Не удалось выделить память в удалённом процессе." << std::endl; return false; } SIZE_T bytesWritten; if (!WriteProcessMemory(hProcess, remotePacketData, packetData, size, &bytesWritten) || bytesWritten != size) { std::cout << u8"Не удалось записать данные пакета в удалённый процесс." << std::endl; VirtualFreeEx(hProcess, remotePacketData, 0, MEM_RELEASE); return false; } DWORD sendPacketAddress = baseAddress + SENDPACKET; DWORD remoteKernel32Base = GetRemoteModuleBaseAddress(processId, L"ntdll.dll"); if (remoteKernel32Base == 0) { VirtualFreeEx(hProcess, remotePacketData, 0, MEM_RELEASE); return false; } DWORD remoteExitThreadAddr = remoteKernel32Base + RTLEXITUSERTHREAD; if (remoteExitThreadAddr == 0) { std::cout << u8"Не удалось вычислить адрес ExitThread в удалённом процессе." << std::endl; VirtualFreeEx(hProcess, remotePacketData, 0, MEM_RELEASE); return false; } // Код-стаб для вызова функции игровой, который я записываю в память. BYTE codeStub[] = { 0xB9, 0, 0, 0, 0, // mov ecx, GameSession ; ECX = GameSession 0x68, 0, 0, 0, 0, // push size ; Параметр size 0x68, 0, 0, 0, 0, // push remotePacketData ; Параметр packetData 0xB8, 0, 0, 0, 0, // mov eax, SENDPACKET_ADDRESS 0xFF, 0xD0, // call eax 0x83, 0xC4, 0x08, // add esp, 8 ; Очистка стека 0x6A, 0x00, // push 0 0xB8, 0, 0, 0, 0, // mov eax, ExitThread_ADDRESS 0xFF, 0xD0 // call eax }; // Заполняю параметры в код-стабе *(DWORD*)(codeStub + 1) = (DWORD)GameSession; // ECX = GameSession *(DWORD*)(codeStub + 6) = (DWORD)size; // Параметр size *(DWORD*)(codeStub + 11) = (DWORD)remotePacketData; // Параметр packetData *(DWORD*)(codeStub + 16) = sendPacketAddress; // Адрес функции SENDPACKET *(DWORD*)(codeStub + 28) = remoteExitThreadAddr; // Адрес функции ExitThread LPVOID remoteCode = VirtualAllocEx(hProcess, NULL, sizeof(codeStub), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (!remoteCode) { std::cout << u8"Не удалось выделить память для код-стаба в удалённом процессе." << std::endl; VirtualFreeEx(hProcess, remotePacketData, 0, MEM_RELEASE); return false; } if (!WriteProcessMemory(hProcess, remoteCode, codeStub, sizeof(codeStub), &bytesWritten) || bytesWritten != sizeof(codeStub)) { std::cout << u8"Не удалось записать код-стаб в удалённый процесс." << std::endl; VirtualFreeEx(hProcess, remotePacketData, 0, MEM_RELEASE); VirtualFreeEx(hProcess, remoteCode, 0, MEM_RELEASE); return false; } HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)remoteCode, NULL, 0, NULL); if (!hThread) { std::cout << u8"Не удалось создать удалённый поток." << std::endl; VirtualFreeEx(hProcess, remotePacketData, 0, MEM_RELEASE); VirtualFreeEx(hProcess, remoteCode, 0, MEM_RELEASE); return false; } WaitForSingleObject(hThread, INFINITE); VirtualFreeEx(hProcess, remotePacketData, 0, MEM_RELEASE); VirtualFreeEx(hProcess, remoteCode, 0, MEM_RELEASE); CloseHandle(hThread); return true; }
  • Тут можно за денежку попросить взломать интересующую вас игру (исключительно оффлайн одиночные игры)

    21 Темы
    59 Сообщения
    Partizan1078P


    Начни с этого!

  • Поболтать о том, о сём...

    29 Темы
    114 Сообщения
    StoneWeaverS

    Пользователь @inaraghj написал в I want Advice on Game Modding:

    Hey everyone,

    I have developed an interest in understanding how mods work & want to start creating my own for some of my favorite games. I want advice and insights from those of you who have been active in the game modding community for a while.

    What tools or software would you suggest for a beginner?? Are there any must have programs for modding specific game genres or engines?

    Are there any pitfalls or rookie mistakes I should watch out for as I begin??

    I want to hear about any cool projects you have worked on or tips that helped you improve your skills.

    I came across a few resources during my research but I want to hear about any tutorials, guides or personal experiences you have found helpful.

    I am also curious if tools like the splunk tool have any practical applications in game modding or if it is something unrelated in this context.

    Thank you.

    Привет, ты на русскоязычном форуме, изволь общаться на русском языке.

  • Вопросы и предложения по форуму и ресурсу в целом

    5 Темы
    29 Сообщения
    StoneWeaverS

    @Beezwax95 Привет! Увы, мы не занимаемся андроид играми, тем более онлайн. Ну и да, эту тему придётся закрыть, так как раздел обратной связи предназначен для обратной связи по работе самого форума.

  • Файлы

    Трейнеры, таблицы, скрипты...
    Права на публикацию в данной категории и субкатегориях имеют только представители группы "Разработчики"