|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.12.2009, 20:51 | #1 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 53
|
Бот - как избежать слежки?
Я с другим пацаном разрабатываю прогу автоматизации действий в одном приложении. Ее алгоритм:
1 раз в секунду делать скриншот 2 маленький ORS (optical recognition system) - определить изменения в окне клиентской программы 3 по алгоритму принять решение о дальнейшем действии 4 выполнить клик мышкой по кнопке Косяк в том, что использовать ИИ-бота запрещено, и клиент отслеживает это. Вопросы: 1 как запущенный клиентский экзешник может отследить, что работает бот, а не я? 2 как мне обойти эту слежку? мои размышления по первому вопросу: 1) тупо делает tasklist и смотрит какие процессы из каких папок запущены 2) в клиенте есть лог, в кот. выводятся события - клиент, я думаю, может отследить обращения к своему скролл-окну или хз что там за дочерний объект. этот пункт меня не пугает, т.к. бот скриншотит эти ихменения а не обращается к окну 3) может ли клиент отследить клики мышью? - например бот без рандомизатора тыкает в один и тот же пиксел и водит мышью тупо по прямым - сразу видно, что играет не человек по поводу второго вопроса - мое мнение: 1) использовать виртуальную машину в VirtualPC / Vmare Workstation либо рдп-сессию / сессию р-админа либо что-то подобное - запускать клиента в ней, а бот - на хост-машине 2) запускать клиента из под учетки с сильно-урезанными правами Что думаете? |
18.12.2009, 22:21 | #2 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
Игра, я так понимаю. Боты - зло!
Теперь по теме. Гадать бесполезно, способов проверки можно напридумывать много. Теоретически отследить можно не только место щелчка, но и скорость, ускорение, траекторию курсора. Даже если некоторые параметры будут случайными... Человек же не будет перемещать мышь со скоростью строго от x до y с линейным распределением вероятности. |
19.12.2009, 11:30 | #3 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 53
|
Спасибо за оперативный ответ.
Теперь конкретизирую. клиент не онлайн-игра, а нечто другое. Приложение представляет собой 4 окна, позиция/размеры которых не меняется, не появляются другие окна. В общем эти окна статичны и не перекрывают друг друга. поэтому считывание инфы легко сделать скриншотом и не надо использовать функции *Window. Может ли клиент отследить функцию скриншота раз в секунду? Другое дело - клики и движения мышью. Как сделать эти действия максимально похожими на человека? Движения: 1 во время простоя мышь движется по "стандартным юзерским" траекториям - к пуску, к окну винампа наверху монитора и тд 2 траектория мыши от точки А до точки Б должна представлять собой случайную кривую в заданном коридоре, т.е. зигзагообразную линию с фиксированной максимальной амплитудой и небольшим шагом. Как сложно реализовать? 3 скорость движения мыши должна быть резкой - типа человек собирается быстро нажать на кнопку. Как сложно реализовать? Клики: 1 случайные координаты в заданной зоне. Окна сделана в виде страниц ИЕ - т.е. кнопки - не объекты, а картинки - ну как на странице браузера. 2 случайные ошибки/мисклики 3 клики в сторонних приложениях Как вариант - сделать запись моих реальных движений - это реально? Записать сотню моих мувов - кликов и забить их в программу. Более того - сделать список этих движений обновляемым - я буду записывать эти движения. !!! ВАЖНЫЙ ВОПРОС !!! Я двигаю курсор из одного угла монитора в другой и кликаю по идеальной прямой. Бот системными функциями делает то же самое. Клиент может различить, где я, а где бот? Учитывая вышесказанное, я бы сделал так: создал бы виртуальную машину - в ней запустил клиент на хост-машине запустил бы бота бот скриншотит и кликает куда надо - все функции происходят на хост-машине, перехватить их процесс из виртульной машины не может - так? Что скажешь? |
19.12.2009, 12:33 | #4 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 53
|
Вопрос по виртуальной машине. Какие виртуалки есть в природе? Я знаю VirtualPC, VMare Workstation - какие еще? Какие у них достоинства и недостатки?
Самый, пожалуй, важный вопрос - клиент может узнать, что он запущен на виртуальной машине? У каждой железки и компа в целом есть Hardware ID - друг-асушник сказал, что у виртуальных машин ID четко указывает на их виртуальность. Нельзя ли его изменить? |
19.12.2009, 14:52 | #5 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
VirtualBOX от Sun
|
19.12.2009, 20:44 | #6 | ||
Студент, не
Старожил
Регистрация: 29.01.2009
Сообщений: 2,067
|
Цитата:
Цитата:
Может ли чужая программа достоверно узнать, было ли нажатие клавиатуры/мыши мыши от самих устройств или порождены из моей программы через PostMessage(<хендл окна>, ...) ? А если нажатия были посланы через keybd_event/mouse_event ?
I am the First of Cyber Evolution...
I am the First to Program your Future... |
||
20.12.2009, 01:14 | #7 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
то есть использовать функции абсолютного контроля. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
21.12.2009, 15:25 | #9 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
28.12.2009, 09:11 | #10 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 53
|
Имеется ситуация.
Я загружаю комп, запускаю на нем клиента. С другого компа захожу на первый комп в ту же сессию по рдп. Клиент каким-либо образом может увидеть, что я стал работать по рдп? Тот же самый вопрос - только я делаю логон по рдп, т.е. первая машина загружена, но пользователем на нее я не залогинился - логинюсь через рдп-клиент. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как избежать бана со стороны сервера за запросы | 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 |