Гайды
Павел Фокс

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

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

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

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

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

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

Коды и значения клавиш можно посмотреть здесь.

Это объясняет всю "магию" того, почему программа не мешает игровому процессу - на эти клавиши никто не назначает никаких действий.

Проверка кейлоггером это подтвердила, а также показала, что ПО тупо спамит F13 каждую секунду - ровно 10 нажатий за 10 секунд, а также не проверяет отсутствие активности пользователя - кнопки нажимаются всегда, даже во время игрового процесса.

Но ЗОЧЕМ так часто, если GFN требует проявлять активность лишь раз в 15 минут?

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

Исходя из этого, наиболее близкое, но прозрачное решение можно получить таким образом:

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

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

loop ; зацикливание скрипта { sleep 60000 ; пауза перед началом цикла 60000 миллисекунд = 1 минута if (A_TimeIdle >= 300000 and WinActive("ahk_exe GeForceNOW.exe")) ; проверка активности пользователя в течение 300000 миллисекунд = 5 минут и проверка активного окна GeForceNOW { SendInput {vk7C} ; отправка клавиши F13 (0x7C) sleep 500 ; пауза 500 миллисекунд = 0.5 секунд SendInput {vk1C} ; отправка клавиши IME convert (0x1C) } }

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

Результат

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

При отсутствии вашей активности за ПК в течение 5 минут, если не трогаете клаву и мышь (спасибо Elendiar за подсказку), а также при наличии активного окна GeForce NOW, скрипт будет раз в 1 минуту нажимать клавишу F13 и на всякий случай одну из IME.

Когда вы играете, используете ПК, или если окно GeForce NOW неактивно, то никакие клавиши нажиматься не будут.

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

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

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

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

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

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

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

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

loop ; зацикливание скрипта { Random, rand, 60000, 120000 Sleep %rand% if (A_TimeIdle >= 300000 and WinActive("ahk_exe GeForceNOW.exe")) { 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 } } RandomKeyPress: Random, rand, 1000, 2000 return RandomMousePosition: Random, rand1, 10, 50 Random, rand2, 10, 50 Random, rand3, 10, 50 return

Также как и в первом варианте, скрипт будет ожидать отсутствии вашей активности за ПК в течение 5 минут, и наличие активного окна GeForce NOW, с той лишь разницей, что по истечении этого времени, вместо F13 он будет рандомно каждые 1-2 минуты нажимать клавиши W, S с рандомной продолжительностью и двигать мышкой на рандомное расстояние и с рандомной скоростью, что в теории должно казаться более человечным поведением для GFN. В этом случае вы будете видеть как ваш персонаж "дергается" при неактивности.

{ "author_name": "Павел Фокс", "author_type": "self", "tags": [], "comments": 52, "likes": 135, "favorites": 31, "is_advertisement": false, "subsite_label": "howto", "id": 664684, "is_wide": false, "is_ugc": true, "date": "Sun, 07 Mar 2021 17:40:39 +0300", "is_special": false }
0
52 комментария
Популярные
По порядку
Написать комментарий...
63

Не ну это конец. Судя по тому, что говорил автор оригинального фикса, сейчас произойдут 2 вещи (еще до того, как я допишу свой коммент).

Во-первых, ГФН сразу выкатит фикс.
Во-вторых, у тебя украдут код. Он явно пойдет в основу новой операционной системы. Убийцы виндоус. Ну или вроде того.

Ответить
26

школьники уже бегут перепродавать код 

Ответить
3

Но сначала мультики 

Ответить
23

Посмотрел ту тему. Это пиздец. Какой-то школьник открыл для себя C#, и аж для целой программы в 100 КБ создал группу в ВК.

Ответить
18

Причём преподносит какой-то элементарный кликер как прорыв в разработке, исходный код открывать нельзя, иначе корпорации и школьники украдут код и наводнят рынок платными версиями софта, а GFN уже отослала к нему пять крепких японцев, пачку судебных исков и в поте лица кодит заплатку, дабы заделать такую дыру, найденную автором. Смех, да и только.

Ответить
0

Ну, детки дорвались до VS всего лишь).

Ответить
21

Комментарий удален по просьбе пользователя

Ответить

Многолетний будильник

MISAKA
6

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

Ответить
28

Комментарий удален по просьбе пользователя

Ответить

Открытый Паша

–9

Было утром, вроде

Ответить
36

Дык тут суть поста именно в том, что утром тут какой-то очень мутный чел выложил свою прогу с аналогичным функционалом, но при этом наотрез отказался рассказывать, как она работает, и выкладывать исходники, придумывая для это оправдания одно удивительнее другого.
А это не то, это вот это, это уже нормально сделано.

Ответить

Способный Даниль

Открытый
8

Ну так тут речь как раз о том, что автор утреннего поста отказывается выложить исходники своей утилиты, зато очень хочет, чтобы ее установило побольше людей. И предлагается альтернатива в виде open-source решения.

Ответить
6

Кстати, сейчас тут применил свои дико ограниченные знания гидры, и путём декомпиляции DLL выяснил, что прохрамма того маминого программиста делает даже меньше, чем эта, лол.
Но это не считая потенциальных вредоносных действий. Но их обнаружить мне (лично мне, я реверс-ынжыниренге вообще не разбираюсь) пока что не удалось, кто-то другой, наверное, будет более успешен в этом плане.

Ответить

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

Комментарий удален

7

Я правильно понимаю, что весь гениальный принцип ее работы в том, что она тупо отсылает несуществующую у подавляющего большинства юзеров клавишу F13? :D https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

Ответить
2

Судя по всему, всё именно так, да :^)

Ответить
4

Проверил кейлоггером - он тупо спамит F13 каждую секунду, ровно 10 нажатий за 10 секунд :D

Ответить
13

Ахахахаха, вот же он клоун

Ответить
4

Оскорбление чувств клоунов. !  Извинись!

Ответить
1

ДА Я ПРОСТА ТРОЛИЛ НУ ВЫ ЧЕГО АХАХА НУ ВЫ ВСЕ ТУПЫЕ

Каждый раз всё больше ахуеваю с человеческой способности быть долбоёбом

Ответить
5

Даже обидно как то за GFN, я думал у них там стоят какие-то детекторы одинаковых нажатий и с одинаковым промежутком, нахуя я рандом на всё навешивал -___- 

Ответить
1

@Vladimir Holmston 
Попробуй тогда такой скрипт на AHK 

loop
{
sleep 120000
SendInput {vk7C}
sleep 500
SendInput {vk1C}
}

Ответить
3

Посмотрите bahavior exe файла (он на .Net кажется, я с телефона). 
https://www.virustotal.com/gui/file/a87bf9bbf18f2021a166fbfa460ae772e36c08ab22ca475228db65cb605447f7/behavior
Вопросы заданы:

Ответить
4

У меня, вроде, с WMP он никак не взаимодействовал. Может, просто повезло.
Зато выяснилось, что оно за каким-то половым органом лезет в настройки интернета и в кэш и настройки IE.

Ответить
0

Видимо в WMP как-то используются клавиши F13 и IME, поэтому процесс убивается чтобы не конфликтовать 

Ответить
2

Таким макаром можно половину винды убить, вдруг там как-то F13 используется. Да и не должно нажатие как-то влиять на программу, если её окно не в фокусе.

Ответить
1

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

Ответить
5

Open source

А под какой лицензией? Вдруг кто-то захочет использовать код 😏

Ответить
4

Обнаружил прикол сейчас, оффтоп:

Решил прослушать статью, но говорилка зачитывала не совсем то, что написано, а будто чуть более раннюю версию текста. Интересно.

Ответить
0

Интересная деталь

Ответить
0

если это тот самый 0х00 - то это один из разрабов пикабу, в целом лет 5 назад делал довольно годные штуки (есть посты на пикабу)

Ответить
4

Не, на Пикабу чел адекватный был

Ответить
1

Нет ничего связанного с играми, чего бы я не сделал в AHK, топ программа.

Ответить

Комментарий удален

Комментарий удален

Комментарий удален

0

Вот бы просто карандаш на пробел положить

Ответить
0

Есть подозрение что простое залипание клавиш детектится 

Ответить

Банальный цвет

Павел
0

У Razer на клавиатурах есть функция, что при нажатии будет детектиться несколько нажатий в секунду, от одного до 20. Проверял в играх с оружием, что стреляет по нажатию, не зажимное. Стреляло, будто нажимаю, хотя просто зажал. Если у кого клава от Razer или тех, у кого в софте такое предусмотрено - можно и карандаш

Ответить
2

То есть блади за это банят, а разору можно..?

Ответить
1

Есть подозрение что цикличное нажатие клавиш с одинаковыми паузами тоже детектится, поэтому нужен рандом 

Ответить
0

В игре нет, я когда КП77 проходил , зажимал w карандашом. 

Ответить
0

Если там реально никаких детектов не стоит, тогда вообще можно в две строчки уложиться. Пусть себе в стену упирается

F1:: SendInput {W down}
F2:: SendInput {W up}

Ответить
0

Не совсем в тему, но я только что узнал про F13. Не используя кода, я как-то могу её нажать? Хочу навешать её на G-клавишу клавиатуры (Cougar 500K), но не знаю, как её запихнуть в макрос кугаровской программы. 

Ответить
0

Там есть в статье инструкция

Ответить
0

Можно создать ahk файл с командой SendInput {vk7C} и задать макросу выполнение этого файла. А если макрос клавы позволяет выполнять коды виртуальных клавиш, то можно просто туда соответствующий код клавиши прописать, и не нужна прокладка в виде ahk https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

Ответить
0

На дтф невозможно читать уже

Ответить
0

Бля... 15 минут. Я думал там за пару минут кикают. 

Ответить
0

Ну кстати не факт что эта цифра плавающая и может меняться со временем. Надо тестить 

Ответить
0

активным это значит прям открытым? или оно может быть за окном хрома например? 
(ну а вдруг...)

Ответить
0

Активное окно = окно в фокусе, на переднем плане. 
 
Если есть потребность держать GFN свернутым, параллельно используя ПК, то можно такой вариант использовать:
 
loop
{
sleep 60000 
ControlSend,, {vk7C}, ahk_exe GeForceNOW.exe
}
 
Скрипт будет просто отправлять F13 каждую минуту в окно GFN, даже если оно свернуто или не в фокусе. Не тестировал, но в теории должно работать.

Ответить
–3

Что такое гфн, во что там играют, за что там кикают и зачем нужно оставатся в онлайне?

Ответить
0

Сервис облачного стриминга, играют в игры которые не тянет комп, кикают за АФК - простой без активности в течение 15 минут, оставаться в онлайне нужно чтобы не потерять прогресс\сессию если отошел. 

Ответить

Комментарии

null