Перейти к содержанию

Создание Bhop для Counter-Strike:Source c функцией обхода SMAC(Часть 2)


Рекомендуемые сообщения

Часть 1 К 4 утра нашлось все-таки свободное время :-D 

 

 

Скрытый текст

В этой статье нам понадобится найти адрес прыжка, базовый адрес игрока, смещение m_fFlags которое возвращает значение в каком положении находится игрок. Начнем со смещения открываем любой отладчик и ищем строку m_fFlags.

74kOKyiJJ7M.jpg

 

Видим push 350h это наше смещение, буква h значит, что смещение типа DWORD(HEX). Все закрываем отладчик.

 

Wlkm73pWEzM.jpg

 

Теперь найдем адрес прыжка, заходим в игру, создаем сервер. Все команды прописываются без кавычек. открываем консоль пишем “+jump” и enter в CE будем искать 5 типа int, дальше снова открываем консоль и пишем “-jump” в CE пишем 4 и сканируем. Продолжаем так пока не останется как можно меньше адресов. Если найдется статический(зеленый) используйте его, если нет, то придется искать поинтер.

 

egwTmqi32rs.jpg

 

Когда закончили пишем в консоль sv_cheats 1; cl_pdump 1. Находим строку m_iFlags integer() и переписываем только те значение пока игрок находится в воздухе. Они у всех одинаковые, так что можете переписать из статьи (256,258,260,262,1280).

 

JF_MoV6gm18.jpg

 

 Остался базовый адрес, но как его находить можно посмотреть в видео-уроках keng’а. 

 

 

 

Скрытый текст

 

Для начала напишем функцию по которой будем определять находимся мы в воздухе или нет. Используем для этого найденное ранее значение fFlags и LocalBase

Теперь приступим к написанию Bunnyhop. Назначим клавишей активации пробел.

Используем наш адрес прыжка, который мы искали в самом начале.

Что делает у нас код и почему нас не банит SMAC? Из первой части мы узнали, что SMAC проверяет время от приземления игрока и до следующего прыжка, если время равно 0 и у вас 5 прыжков (идеальных прыжков) с таким результатом мы получим бан. Счетчик анти-чита работает таким образом, что счет идет от приземления до приземления, но наш прыжок в воздухе подходит под условие, при котором счетчик сбрасывается.

 

 

 

Скрытый текст

 

 

 

int in_air(){
  int fFlag;
  ReadProcessMemory(hProcess, (LPCVOID)(LocalBase + 0x350), &fFlag, 4, 0);
  return fFlag == 256 || fFlag == 258 || fFlag == 260 || fFlag == 262 || fFlag == 1280;
} 
void Bunnyhop() {
  int on = 5;
  int off = 4;
  if (GetAsyncKeyState(VK_SPACE) & 0x8000 && !in_air) {
    WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &on, 4, 0); //5
  } else if (GetAsyncKeyState(VK_SPACE) & 0x8000 && in_air)	{
    WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &off, 4, 0); //4
    WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &on, 4, 0); // 5
    WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &off, 4, 0); //4
  } else {
    WriteProcessMemory(hProcess, (LPCVOID)(ClientDLL + 0x4F3B3C), &off, 4, 0); //4
  }
}

 

Изменено пользователем partoftheworlD
  • Плюс 3
Ссылка на комментарий
Поделиться на другие сайты

Как хорошо, когда античит OpenSource  ^_^ 

Если смотреть сорцы античита, то можно наоборот извлекать для себя идеи функций чита, хех

Одно дело идеи, а другое ограничение со стороны сервера и VAC :-D

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.