Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Складывается ощущение, что у людей при слове ассемблер начинается паническая атака, закладывает уши и отключается мозг
MH_CreateHook(ShellExecuteExWptr,
reinterpret_cast<void*> (&DetourShellExecuteExW),
reinterpret_cast<void**> (&fpShellExecuteExW));
MH_EnableHook(ShellExecuteExWptr);
// ......
BOOL WINAPI DetourShellExecuteExW(LPSHELLEXECUTEINFOW pExecInfo) {
// some code
return fpShellExecuteExW(pExecInfo); // call original proc
}Складывается ощущение, что у людей при слове ассемблер начинается паническая атака, закладывает уши и отключается мозг. Не нужно его боятся на столько, он не так страшен. Ведь что может быть проще, чем попросить саму программу выполнить свою же функцию и результат поместить по указателю который вы знаете? Не нужно изобретать велосипед, я использую, то что естьПредположим мы пишем чит (или бот как вам удобнее). Мы умеем перехватывать управление, но помимо этого у нас присутствует бизнес-логика самого чита и чем больше его функциональность, тем больше бизнес логики. Вот я хочу к примеру добавить в свой чит возможность его включения и отключения на кнопку F8, сколько строк кода это займёт на ассемблере и насколько легко будет такой код писать и сопровождать?
Вот я хочу к примеру добавить в свой чит возможность его включения и отключения на кнопку F8, сколько строк кода это займёт на ассемблере и насколько легко будет такой код писать и сопровождать?
Если бы передо мной стояла задача детекта вашего чита, я бы детектил патч в памяти но никак не код чита.
Если Вы не заметили, то только инъекции написаны на ассемблере, а все остальное на C#. И кстати о бизнес логике хочу сказать, что на C# проще контролировать потоки чем в С++.Не понял о чем вы, но это ваше субьективное мнение не стану спорить.
Детектили патч в памяти 3-rd party библиотеки? Каким образом? Написали бы к игре еще и дизасемблер с отладчиком? Повторюсь. Я предпочитаю конструктивную критику. Расскажите пожалуйста.Да ради бога :) С точки зрения защиты игры есть ряд библиотек поведение которых может повлиять на игровую логику, это системные библиотеки Kernel32, KernelBase, User32, Ntdll и т.п., графические библиотеки относящиеся к OpenGL, DirectX и возможно какие-то собственные библиотеки, распостраняющиеся с игрой. Имена этих библиотек нам за ранее извесны, будем их называть критическими (поведение остального кода в процессе нас не интересует). Так вот как детектится изменение в критических библиотеках. Анализируется импорт модулей игры и собирается список импортируемых функций из критических библиотек, снимается контрольная сумма с первых байт импортируемых функций, снимается контрольная сумма с таблицы экспорта критических библиотек. После чего защита должна переодически проверять эти контрольные суммы. Но это очень упращенный вариант реализации, тут есть подводные камни.
На все остальные вопросы ответ будет следующим: «За последние 4 года на battle.net сервере, я ни разу не получил бан или предупреждение»
100+ версий DirectX под разные платформы, будете составлять базу, сверять по ней и перепатчивать ее?Зачем составлять базу, вы думаете контрольные суммы собираются заранее?) Контрольная сумма снимается во время старта процесса из памяти либо из исполняемого файла на диске который был загружен игрой. Тут нет разницы какая версия библиотеки используется, зная её виртуальный интерфейс бинарная реализация нас не интересует.
На все остальные вопросы ответ будет следующим: «За последние 4 года на battle.net сервере, я ни разу не получил бан или предупреждение».Первоначально вы спросили как бы я это обнаружил, я вам ответил, речь не идёт про какие-то реализации защит.
Контрольная сумма снимается во время старта процесса из памяти либо из исполняемого файла на диске который был загружен игрой.
близзы формируют некий хеш из содержимого wow.exe и еще ряда dll-ок игры, которые они с собой таскают. они отправляют этот хеш во второй фазе авторизации, уже на реалм (тот самый никому неизвестный unk_crc в CMSG_AUTH_SESSION). дальнейшие действия понятны. 3axap4eHko повезло только потому, что делают они это только один раз в процессе авторизации, а он инжектился после.
Вся информация здесь изложена только в познавательных целях. Особенно для компаний разрабатывающих MMORPG, что бы помочь им бороться с ботоводами.
Пишем бота для MMORPG с ассемблером и дренейками. Часть 4.5