как работают прицельные боты в играх fps?
Мне было любопытно, есть ли у кого-нибудь опыт/знания о ботах aim в онлайн-играх FPS, таких как Counter-Strike. Мне любопытно и хотелось бы узнать больше о том, как курсор умеет фиксироваться на противоположном игроке. Очевидно, если бы я хотел обмануть, я мог бы скачать некоторые читы, так что это больше похоже на обучение. Что в этом все задействовано? Они подключают пользовательскую мышь / клавиатуру, чтобы переместить курсор в нужное место? Как приложение чит знает, где точно навести курсор? Чит приложение должно быть в состоянии получить доступ к данным в игровом приложении, как это достигается?
EDIT: чтобы ответить на sids, как люди получают эти известные места памяти для захвата данных? EDIT2: допустим, я нахожу некоторые значения, которые я хочу в местоположении 0xbbbbbbbb с помощью отладочной программы или некоторых других средств. Как теперь получить доступ и использовать данные, хранящиеся в этом месте в приложении, поскольку я не владею этой памятью, игра делает. Или у меня теперь есть доступ к нему, так как я ввел в процесс и могу просто скопировать память по этому адресу с помощью memcpy или что-то еще?
кого-нибудь еще есть что добавить? Стараюсь узнать как можно больше об этом!
6 ответов:
где-то в памяти игры находится расположение X,Y и Z каждого игрока. Игра должна знать эту информацию, чтобы она знала, где отображать модель игрока и т. д. (Хотя вы можете ограничить, сколько клиент игры может знать, только отправив ему информацию об игроке для игроков в поле зрения).
aimbot может сканировать известные места памяти для этой информации и считывать ее, предоставляя ей доступ к двум позициям-игроку и врагам. Вычитание двух позиций (как векторы) дает вектор между ними, и оттуда просто вычислить угол от текущего вектора взгляда игрока до желаемого вектора угла.
путем отправки ввода непосредственно в игру (это тривиально) и тонкой настройки с некоторыми константами вы можете получить его, чтобы прицелиться автоматически довольно быстро. Самая сложная часть процесса-это прибивание, где позиции хранятся в памяти, и настройка для любой динамической структуры данных, перемещающей игроков вокруг вас (например, усеченного выбраковки).
обратите внимание, что они труднее писать, когда адрес рандомизации используется, хотя и не невозможно.
Edit: Если вам интересно, как программа может получить доступ к памяти других программ, типичный способ сделать это через DLL инъекции.
Edit: поскольку это все еще получает некоторые хиты, есть больше способов, которыми работают aimbots, которые сейчас более популярны; а именно перезапись (или исправление на месте) Direct3D или OpenGL DLL и изучение функций вызывает рисование геометрии и вставку вашей собственной геометрии (для таких вещей, как wall-hacks) или получение позиций моделей для aimbot.
интересный вопрос - не совсем ваш ответ, но я помню, что в первые дни Counter-Strike люди использовали для замены своих opengl32.dll с испорченным, который будет отображать полигоны как прозрачные, чтобы они могли видеть сквозь стены.
хаки улучшились и стали более раздражающими, и люди стали более творческими. Теперь клапан / пар, кажется, делает хорошую работу по их удалению. Просто немного предупреждения, если вы планируете играть с этим материалом, Steam сканирует "хаки", и если любые найдены, они запретят вам навсегда
многие "прицельные боты" - это вовсе не прицельные боты, а триггерные боты. Это фоновые процессы, которые ждут, пока ваш ридикюль не окажется над целью и не выстрелит автоматически. Это может быть достигнуто несколькими различными способами, но многие игры облегчают это, отображая имя кого-то, когда ваша цель проходит над ними или какой-то другой фрагмент данных в памяти, который триггер-бот может указать.
таким образом, Вы играете, размахивая мышью на вашей цели и как только вы наведите курсор мыши на них это вызовет выстрел без того, чтобы на самом деле стрелять себя.
Они все еще должны быть в состоянии точно определить, что такого рода вещи в памяти и имеют те же проблемы, что и истинные "Aim bots".
другой метод, который использовался в прошлом, заключается в обратном проектировании форматирования сетевых пакетов. Атака "человек в середине" на поток пакетов (которая может быть выполнена на той же системе, на которой работает игра) может предоставить позиции игроков и другую полезную информацию. Поддельные пакеты могут быть отправлены на сервер, чтобы переместить игрока, стрелять или делать все виды вещей в зависимости от игры.
Проверьте учебник серии по Fleep здесь. Его полностью прокомментированный исходный код C# можно скачать здесь.
в двух словах:
Найти вашего игрока х, у, Z-координаты курсора X и y координаты, а также всех врагов Х Y Z координаты. Вычислить расстояние между вами и ближайший врага. Теперь вы можете рассчитать координаты курсора x y, необходимые для получения авто цель.в качестве альтернативы вы можете исключить врагов, которые мертвы (здоровье равно 0), поэтому в этом случае вам также нужно найти адрес здоровья противника. Данные, связанные с плеером, обычно находятся близко друг к другу в памяти.
опять же, проверьте исходный код, чтобы увидеть в деталях, как все это работает.
Edit: я знаю этот Оффтопик, извините, но я думал, что это поможет Аскеру.
то, что хакерская индустрия не пробовала, но с чем я экспериментировал, - это захват сокетов. Это может звучать намного больше, чем на самом деле, но в основном он использует драйверы WinPCap для подключения к процессу "интернет-соединения через TCP (сокеты), даже не приближаясь к смещениям процесса".
тогда вам просто нужно будет узнать, как сигналы TCP их переносят и хранят в хэш-таблице или многопользовательском (пакетном) классе. Затем после извлечения информации и наложения информации на окно (не зацепило), просто прозрачные этикетки и 2D-коробки над экраном оконной игры.
Я тестировал его на Call of Duty 4, и я получил местоположение 4 игроков через TCP, но также, Как сказал Рон Warholic: все методы взлома не будут работать, если разработчик игры написал игровой сервер только для вывода игроки, когда текущий пользователь должен видеть игрок.
и после того, как вырежете передачу местоположения этого игрока, как для X Y Z, и игрок больше не будет храниться и не будет отображаться там для остановки wallhack. И aimbots будет в некотором роде работать, но не эффективно. Так или иначе, если вы смотрите на создание wallhack, не подключайтесь к этому процессу, попробуйте изучить WinPCap и подключитесь к интернет-сигналам. Что касается игр, не ищите список процессов для Интернета передачи. Если вам нужен пример, который использует это, перейдите к поиску RUST Radar, который выводит местоположение игрока на карте, а также выводит других игроков вокруг вас, которые отправляются через интернет-передачи TCP и не подключаются к игре.