Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2009, 20:51   #1
boris-blade
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 53
По умолчанию Бот - как избежать слежки?

Я с другим пацаном разрабатываю прогу автоматизации действий в одном приложении. Ее алгоритм:
1 раз в секунду делать скриншот
2 маленький ORS (optical recognition system) - определить изменения в окне клиентской программы
3 по алгоритму принять решение о дальнейшем действии
4 выполнить клик мышкой по кнопке

Косяк в том, что использовать ИИ-бота запрещено, и клиент отслеживает это.
Вопросы:
1 как запущенный клиентский экзешник может отследить, что работает бот, а не я?
2 как мне обойти эту слежку?

мои размышления по первому вопросу:
1) тупо делает tasklist и смотрит какие процессы из каких папок запущены
2) в клиенте есть лог, в кот. выводятся события - клиент, я думаю, может отследить обращения к своему скролл-окну или хз что там за дочерний объект. этот пункт меня не пугает, т.к. бот скриншотит эти ихменения а не обращается к окну
3) может ли клиент отследить клики мышью? - например бот без рандомизатора тыкает в один и тот же пиксел и водит мышью тупо по прямым - сразу видно, что играет не человек

по поводу второго вопроса - мое мнение:
1) использовать виртуальную машину в VirtualPC / Vmare Workstation либо рдп-сессию / сессию р-админа либо что-то подобное - запускать клиента в ней, а бот - на хост-машине
2) запускать клиента из под учетки с сильно-урезанными правами

Что думаете?
boris-blade вне форума Ответить с цитированием
Старый 18.12.2009, 22:21   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Игра, я так понимаю. Боты - зло!
Теперь по теме. Гадать бесполезно, способов проверки можно напридумывать много. Теоретически отследить можно не только место щелчка, но и скорость, ускорение, траекторию курсора. Даже если некоторые параметры будут случайными... Человек же не будет перемещать мышь со скоростью строго от x до y с линейным распределением вероятности.
Somebody вне форума Ответить с цитированием
Старый 19.12.2009, 11:30   #3
boris-blade
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 53
По умолчанию

Спасибо за оперативный ответ.
Теперь конкретизирую. клиент не онлайн-игра, а нечто другое. Приложение представляет собой 4 окна, позиция/размеры которых не меняется, не появляются другие окна. В общем эти окна статичны и не перекрывают друг друга. поэтому считывание инфы легко сделать скриншотом и не надо использовать функции *Window. Может ли клиент отследить функцию скриншота раз в секунду?
Другое дело - клики и движения мышью. Как сделать эти действия максимально похожими на человека?
Движения:
1 во время простоя мышь движется по "стандартным юзерским" траекториям - к пуску, к окну винампа наверху монитора и тд
2 траектория мыши от точки А до точки Б должна представлять собой случайную кривую в заданном коридоре, т.е. зигзагообразную линию с фиксированной максимальной амплитудой и небольшим шагом. Как сложно реализовать?
3 скорость движения мыши должна быть резкой - типа человек собирается быстро нажать на кнопку. Как сложно реализовать?

Клики:
1 случайные координаты в заданной зоне. Окна сделана в виде страниц ИЕ - т.е. кнопки - не объекты, а картинки - ну как на странице браузера.
2 случайные ошибки/мисклики
3 клики в сторонних приложениях

Как вариант - сделать запись моих реальных движений - это реально? Записать сотню моих мувов - кликов и забить их в программу. Более того - сделать список этих движений обновляемым - я буду записывать эти движения.
!!! ВАЖНЫЙ ВОПРОС !!! Я двигаю курсор из одного угла монитора в другой и кликаю по идеальной прямой. Бот системными функциями делает то же самое. Клиент может различить, где я, а где бот?

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

Что скажешь?
boris-blade вне форума Ответить с цитированием
Старый 19.12.2009, 12:33   #4
boris-blade
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 53
По умолчанию

Вопрос по виртуальной машине. Какие виртуалки есть в природе? Я знаю VirtualPC, VMare Workstation - какие еще? Какие у них достоинства и недостатки?
Самый, пожалуй, важный вопрос - клиент может узнать, что он запущен на виртуальной машине? У каждой железки и компа в целом есть Hardware ID - друг-асушник сказал, что у виртуальных машин ID четко указывает на их виртуальность. Нельзя ли его изменить?
boris-blade вне форума Ответить с цитированием
Старый 19.12.2009, 14:52   #5
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
По умолчанию

VirtualBOX от Sun
Alter вне форума Ответить с цитированием
Старый 19.12.2009, 20:44   #6
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Гадать бесполезно, способов проверки можно напридумывать много. Теоретически отследить можно не только место щелчка, но и скорость, ускорение, траекторию курсора. Даже если некоторые параметры будут случайными... Человек же не будет перемещать мышь со скоростью строго от x до y с линейным распределением вероятности.
Это-то понятно, но:
Цитата:
!!! ВАЖНЫЙ ВОПРОС !!! Я двигаю курсор из одного угла монитора в другой и кликаю по идеальной прямой. Бот системными функциями делает то же самое. Клиент может различить, где я, а где бот?
Мне вот тоже интересно...

Может ли чужая программа достоверно узнать, было ли нажатие клавиатуры/мыши мыши от самих устройств или порождены из моей программы через PostMessage(<хендл окна>, ...) ?
А если нажатия были посланы через keybd_event/mouse_event ?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 20.12.2009, 01:14   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Другое дело - клики и движения мышью. Как сделать эти действия максимально похожими на человека?
заблокировать комп
то есть использовать функции абсолютного контроля.
Цитата:
Может ли чужая программа достоверно узнать, было ли нажатие клавиатуры/мыши мыши от самих устройств или порождены из моей программы через PostMessage(<хендл окна>, ...) ?
хотя бы через наличие фокуса у окна
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.12.2009, 15:19   #8
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Стрелка

Цитата:
хотя бы через наличие фокуса у окна
Хм...

А с keybd_event/mouse_event ?

Вот можно почитать кое что: > ссыль <
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 21.12.2009, 15:25   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
А с keybd_event/mouse_event ?
это и есть мое заблочить комп...ибо за компом под такой имитацией юзера не поработаешь..
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.12.2009, 09:11   #10
boris-blade
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 53
По умолчанию

Имеется ситуация.
Я загружаю комп, запускаю на нем клиента. С другого компа захожу на первый комп в ту же сессию по рдп. Клиент каким-либо образом может увидеть, что я стал работать по рдп?
Тот же самый вопрос - только я делаю логон по рдп, т.е. первая машина загружена, но пользователем на нее я не залогинился - логинюсь через рдп-клиент.
boris-blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как избежать бана со стороны сервера за запросы AndrzejX Работа с сетью в Delphi 2 07.12.2009 17:03
как избежать кэширования в Опере rolling PHP 3 01.12.2009 18:34
Как избежать повторение одного и того же номера дважды CockPuncher Microsoft Office Excel 6 03.09.2009 09:53
Как при постройке графика избежать диления на 0 Zerony Общие вопросы Delphi 9 12.01.2009 18:02
совмещение слежки и перехвата joker Win Api 3 18.06.2008 14:57