Ru-MaNGOS

Вернуться   Ru-MaNGOS > Флуд > Флудильня

Важная информация

Флудильня Разговоры на любые темы.

Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.02.2014, 12:10   #1
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию БОТинки и БАНя

Вот собственно решил написать небольшое размышление на тему БОТов.

Небольшое отступление.
Недавно как вы знаете была волна банов, и около 500к пользователей "посадили парится в баню" (на 72 часа | пожизненно) за использование ботов которые автоматизируют боевую ротацию.

Среди них был и я (автор этой темы).
В этой теме я хотел бы порассуждать о том как "поймали" и как по возможности "избежать поимки".

И так, я не использовал бота которым пользовались все, я использовал своего бота (он был написан на подобии PQR, точнее использовал от туда механизм выполнения Lua кода).

Теперь немного анализа о том, как же могли отследить.

1) Для запуска Lua кода в клиенте использовалась функция FrameScript__ExequteBuffer, то есть сначала в код клиента записывался код, который будет вызывать эту функцию, а потом вызывался этот код.

2) В самом коде Lua (который инжектили в процесс) есть protected функции (CastSpellByName, SpellStopCasting, и т.п.), возможно отследили именно вызов этих функций.

3) AFK режим, у меня был встроен antiAFK - случайным образом посылались нажатия клавиш раз в 2-5 минут. Я очень часто делал так, "цеплял" своего персонажа и уходил по своим делам и получалось что-то на подобии такого:

в связи с этим думаю отслеживали активность персонажа и так звание значение LastHardwareActionTime, то есть время последнего действия от устройства ввода.

4) ХЗ (Хрен его знает).

И так в связи с этим я начал переделывать бота:

1) Оформил в виде аддона (естественно сам он работать не будет, так как вызов защищенных функций не пройдет проверку в функции CGGameUI__CanPerformAction.

2) Переписал сам аддон, таким образом, чтобы было больше рандома во времени срабатывания абилок + добавил фейк касты (например заклинание находится на восстановлении, а я его кастую, при этом эмулирую действия пользователя "жмяканье по кнопкам")

3) Для того чтобы не писать больше ничего в память я прицепил отладчик, и с помощью него меняю значение регистра для валидации условия.
это выглядит так:
Код:
008C7657 39 0D E8 6A BB 00                       cmp     dword_BB6AE8, ecx
сюда я поставил точку останова:
Код:
GetThreadContext(thHandle, &thread_context);
thread_context.Dr0 = hoockAddress;
thread_context.Dr7 = 1;
SetThreadContext(thHandle, &thread_context);
и потом при срабатывании точки, менял значение регистра на нужно мне значение (что-то с флагом не получилось):
Код:
GetThreadContext(thHandle, &thread_context);
thread_context.Ecx = blizzVal;
SetThreadContext(thHandle, &thread_context);
Как водится хукнул функцию IsDebuggerPresent, чтобы не спалился отладчик.

Пока что это работает на трильном акке, но вот использовать на основном аккаунте пока что стремно.

Если у кого-то есть какие-то идеи/предположения по поводу того как "спалили" и как "защитится", прошу делится мыслями.
Миниатюры
Нажмите на изображение для увеличения
Название: my_healing.png
Просмотров: 1065
Размер:	100.0 Кб
ID:	1259  
__________________
Konctantin вне форума   Ответить с цитированием
Старый 10.02.2014, 17:03   #2
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1000 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
TOM_RUS вне форума   Ответить с цитированием
Старый 10.02.2014, 18:23   #3
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1000 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 10.02.2014, 19:09   #4
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Да. Близы спалились по названию опкодов еще на PTR. Через некоторое время названия опкодов вообще перестали оставлять в клиенте.
TOM_RUS вне форума   Ответить с цитированием
Старый 11.02.2014, 09:17   #5
Karazhan
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 93
Сказал(а) спасибо: 4
Поблагодарили 4 раз(а) в 3 сообщениях
Karazhan На верном пути
По умолчанию

Играть ботом - терять интерес к игре(я понимаю это круто поставить бота на ночь на фарм, но интереса ноль)
Хреново что бардак у Близзов такой(волна банов - это смешно для ботоводов, они новый акк купят и всё).
Лучше бы встроили функцию Playerbot, я лучше с ботами в рейды и инсты похожу, чем с нашими "живыми игроками" намного лучше. Почему?
1) Не ноют
2) Не афкашут, пока им не скажешь
3) Не орут, а что он так сильно бьёт?
Playerbot у Близзов есть, на ПТР они были пойманы и засниффаны. У меня этих сниффов нет, но знаю что в природе они есть!
__________________
So foolish.
Karazhan вне форума   Ответить с цитированием
Старый 11.02.2014, 12:07   #6
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Цитата:
Играть ботом - терять интерес к игре
на вкус и цвет... сами знаете чего...
__________________
Konctantin вне форума   Ответить с цитированием
Старый 11.02.2014, 12:24   #7
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

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

На сколько мне известно, отловить изменения в в Dr регистрах wow не может, так как доступ к ним не возможен из ring3.

Теперь осталось узнать, мониторят ли близы сами аддоны. Например присутствует ли в аддоне protected функции.

Что-то мне кажется что они это могут сделать, так как сейчас очень часто используют разблокировку protected функций, и способов обойти ее уже уйма.
Хотя если на прямую скармливать текст аддона функции FrameScript__ExequteBuffer, то и аддона как бы нет, а есть просто какое-то состояние Lua.
__________________

Последний раз редактировалось Konctantin; 18.02.2014 в 11:32.
Konctantin вне форума   Ответить с цитированием
Старый 11.02.2014, 19:28   #8
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Karazhan Посмотреть сообщение
Играть ботом - терять интерес к игре
Играть много - терять интерес к жизни. )) Мне лично не очень то и нравиться присутствовать на всех рейдах, где рейдовое время 5 дней в неделю по 3.5 часа в день. К тому же собирать траву и копать шахты, так же удовольствия никакого не достовляет этот процесс. Если играть когда тебе захотелось, то персонаж будет бичом, если персонаж будет бичом, то соответственно ты мало где бываешь, если мало где бываешь, то снифав у тебя более нужных немного.

Хоть я уже не играю давно, но помню очень хорошо всю сущность этого чудовищного задротства. )))
Den вне форума   Ответить с цитированием
Старый 12.02.2014, 10:11   #9
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Хочу спросить совета у знатоков С++. Вот сейчас есть такая ситуация, когда я запускаю разблокировщик Lua, он вписывает в контекст потока Hardware Breakpoint, и пока работает мое приложение - все классно, но вот только я закрываю его, "бряк" остается и приложение падает, так как я не обрабатываю исключение.

Такой вопрос, как можно обработать событие закрытия консоли? Чтобы убрать в нем установленные "бряки".


PS. Сори, нашел:
Установить обработчик:
Код:
SetConsoleCtrlHandler(ConsoleOnCtrlEvent, TRUE);
Собственно сам обработчик:
Код:
BOOL __stdcall ConsoleOnCtrlEvent(DWORD type)
{
    if (type == CTRL_CLOSE_EVENT)
    {
        printf("\nQuiting...\n");
        SetBreakpoints(dwProcessId, 0, 0);
        return TRUE;
    }
    return FALSE;
}
__________________

Последний раз редактировалось Konctantin; 12.02.2014 в 10:25.
Konctantin вне форума   Ответить с цитированием
Старый 12.02.2014, 18:44   #10
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Скорее всего скоро будет опять волна банов, или просто к ней готовятся:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1000 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

Код:
0x008C765E	5 Bytes	02/11/2014 13:36:32	02/11/2014 14:23:49
это адрес по которому патчили клиент, чтобы разблокировать protected Lua функции
__________________
Konctantin вне форума   Ответить с цитированием
Старый 13.02.2014, 14:57   #11
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1000 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 13.02.2014, 16:15   #12
Amaru
MaNGOS Dev
 
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
Amaru На верном пути
По умолчанию

Цитата:
Сообщение от Konctantin Посмотреть сообщение
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1000 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
seems legit
Amaru вне форума   Ответить с цитированием
Старый 14.02.2014, 00:01   #13
SeT
Ученый
 
Аватар для SeT
 
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
SeT На верном пути
По умолчанию

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
SeT вне форума   Ответить с цитированием
Старый 16.02.2014, 21:09   #14
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Сейчас вот читал www.ownedcore.com и там нaрод озабочен разблокировщиками Lua.
Как бы не влепили проверку на "проверку",видать надо как-то по другому выкручиваться.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 17.02.2014, 10:41   #15
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1000 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 18.02.2014, 11:31   #16
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 40 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 20.02.2014, 20:31   #17
Karazhan
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 93
Сказал(а) спасибо: 4
Поблагодарили 4 раз(а) в 3 сообщениях
Karazhan На верном пути
По умолчанию

Может не по теме(хотя биты относятся к пакетам)
Скажите пожалуйста, откуда берутся(на Вики читал просто про creature_template_addon) значения для:
UNIT_FIELD_BYTE 0
UNIT_FIELD_BYTE 1.
Спрашиваю не из праздного любопытства, а для дела. Заранее спасибо!
__________________
So foolish.

Последний раз редактировалось Karazhan; 21.02.2014 в 20:35. Причина: Много текста ни о чём! Оставил нужное.
Karazhan вне форума   Ответить с цитированием
Старый 03.03.2014, 16:31   #18
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

И еще немного про выполнение своего кода на стороне клиента.
Немного покопавшись в интернете наткнулся на довольно таки интересный способ.
Суть заключается в том, чтобы подставить в поток инструкций свой адрес с записанным кодом, а потом после выполнения своего кода его восстановить.
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 40 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 03.03.2014, 16:38   #19
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

Цитата:
Скажите пожалуйста, откуда берутся(на Вики читал просто про creature_template_addon) значения для:
UNIT_FIELD_BYTE 0
UNIT_FIELD_BYTE 1.
Данные берутся из снифов, а именно из пакета SMSG_UPDATE_OBJECT, блок пакета UPDATE_FIELDS.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 03.03.2014, 19:34   #20
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Konctantin Посмотреть сообщение
И еще немного про выполнение своего кода на стороне клиента.
Немного покопавшись в интернете наткнулся на довольно таки интересный способ.
Суть заключается в том, чтобы подставить в поток инструкций свой адрес с записанным кодом, а потом после выполнения своего кода его восстановить.
*** скрытый текст ***
Я сниффер xyla именно так и писал.

Раз уж пошла такая пьянка: https://gist.github.com/LordJZ/9328944

Последний раз редактировалось LordJZ; 03.03.2014 в 19:41.
LordJZ вне форума   Ответить с цитированием
Старый 04.03.2014, 22:36   #21
Karazhan
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 93
Сказал(а) спасибо: 4
Поблагодарили 4 раз(а) в 3 сообщениях
Karazhan На верном пути
По умолчанию

Цитата:
Данные берутся из снифов, а именно из пакета SMSG_UPDATE_OBJECT, блок пакета UPDATE_FIELDS.
Спасибо, хотя для EAI это бесполезно. Там нет поддержки типов, только value. Полноценная поддержка есть только в ядре и в СД2. Есть моменты когда нпц прекращают левитацию, а есть когда начинают(это просто пример)
__________________
So foolish.
Karazhan вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 10:31. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot