GeForce NOW: Open-source обход кика за AFK и разоблачение 0x00 NULL

Сегодня господин новорег 0x00 NULL предложил решение проблемы выбрасывания из игры в GeForce Now спустя 15 минут простоя. Однако, ни предоставлять исходники, ни объяснять принцип работы своего творения, он по какой-то натянутой причине не захотел, предлагая поверить в безопасность его программы на слово.

Более того, активное пропихивание его группы ВК как в посте, так и в самой программе (принудительный редирект при каждом запуске) отбивает всякое желание пользоваться его продуктом интеллектуального труда.

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

Внимание особо впечатлительным, возможно присутствие быдлокода!

Благодаря наводке от Vladimir Holmston, выяснилось, что всё что делает программа от 0x00 NULL при взаимодействии с GFN, это отсылает в окно лаунчера клавиши F13 и, возможно, IME, которые не существуют в физическом виде в подавляющем большинстве клавиатур. Это объясняет всю «магию» того, почему программа не мешает игровому процессу — на эти клавиши никто не назначает никаких действий.

Проверка кейлоггером это подтвердила, а также показала, что ПО тупо спамит F13 каждую секунду — ровно 10 нажатий за 10 секунд. Но ЗОЧЕМ?

GeForce NOW: Open-source обход кика за AFK и разоблачение 0x00 NULL

Это также дает основания полагать, что у GFN нет никаких умных проверок на активность — ни на движение мыши, ни на одинаковые промежутки между нажатиями клавиш и т.п, что упрощает задачу.

Наиболее близкое, но прозрачное решение можно получить таким образом:

1. Ставим AutoHotKey (для тех кто в танке: статья на Вики, исходники на Гите)

2. Копируем в блокнот:

loop ; зацикливание скрипта
{
sleep 120000 ; пауза перед началом цикла 120000 миллисекунд = 2 минуты
IfWinActive, ahk_exe GeForceNOW.exe ; проверка наличия активного окна GeForceNOW
{
SendInput {vk7C} ; отправка клавиши F13 (0x7C)
sleep 500 ; пауза 500 миллисекунд = 0.5 секунд
SendInput {vk1C} ; отправка клавиши IME convert (0x1C)
}
}

3. Сохраняем в формате .ahk
4. Запускаем получившийся файл. По желанию добавляем в автозагрузку

Результат

Интерфейс максимально простой — его нет. Он нам на*уй не нужон, интерфейс ваш. Вам не нужно выбирать процесс игры запущенной в GFN — всё определяется автоматически. Просто либо добавляете программу в автозагрузку, либо запускаете ее вручную.

При наличии активного окна GeForce NOW каждые две минуты скрипт нажимает клавишу F13 и на всякий случай одну из IME. Коды используемых в скрипте клавиш можно посмотреть здесь.

По моим замерам, из игры выбрасывает через 15 минут бездействия. С активным скриптом игра продержалась 30 минут, дальше тестировать не стал.

Частоту нажатия фейковых клавиш можете регулировать по желанию значением в команде Sleep (см. комментарии в коде — пауза перед началом цикла). Но я не заметил никаких проблем и при двухминутной частоте — игровому процессу никак не мешает, лагов нет, управление при нажатии скриптом виртуальных клавишей не блокируется.

Итого мы имеем 6 строчек кода, все команды ясны и прозрачны — обычный кликер, и не надо изобретать велосипед.

А что там у нашего товарища?

UI класс со всеми функциями занимает ~200 строк кода. Код библиотеки занимает ~40 строк кода. Додумайтесь как реализовать подобное и выкладывайте пожалуйста в открытый доступ свои сурсы.

Я придумал способ которым могу обходить кик за афк, зачем мне делать этот способ общедоступным ?

Не совсем обычный кликер, данный способ эмулирования активности пользователя никак не влияет на комфортную игру

Правильно воспользоваться API так чтобы GFN подумал, что ты реальный человек — это нечто другое, чем просто тупое использование какой-то функции. Там нужна логика и прочее.

Если данный вариант пофиксят, тупо запретив использование несуществующих клавиш, или добавят каких-то дополнительных проверок, то есть запасное, менее удобное, но как мне кажется, более надежное решение — его вряд-ли можно как-то запретить:

F1:: SetTimer, AntiAFK, 20000
F2:: SetTimer, AntiAFK, Delete

RandomKeyPress:
Random, rand, 1000, 2000
return

RandomMousePosition:
Random, rand1, 10, 50
Random, rand2, 10, 50
Random, rand3, 10, 50
return

AntiAFK:
Random, rand, 10000, 20000
Sleep %rand%
SendInput {W down}
Gosub, RandomKeyPress
Sleep %rand%
SendInput {W up}
SendInput {S down}
Sleep %rand%
SendInput {S up}
Gosub, RandomMousePosition
MouseMove, %rand1%, %rand2%, %rand3%, R
Gosub, RandomMousePosition
MouseMove, -%rand1%, -%rand2%, %rand3%, R
return

При нажатии на F1, рандомно каждые 10-20 секунд будут нажиматься клавиши W, S с рандомной продолжительностью и двигаться мышка на рандомное количество пикселей с рандомной скоростью. При нажатии на F2 цикл прекращается.

Поменять клавиши запуска и остановки скрипта можно при желании по этой документации.

 

Источник

Читайте также