Перейти к содержанию
  • записей
    86
  • комментарий
    81
  • просмотр
    5591

Обход проверки целостности (программный метод)

Авторизация  
partoftheworlD

599 просмотров

Однажды я уже рассказывал как обойти проверку целостности руками, но это долго, нудно, да и кому вообще надо?!
Для начала необходимые утилиты: x64dbg, CrySearch/CE, любой компилятор.

 

Нашли адрес отвечающий за патроны, ставим на него бряк на запись, выходим на пишущую инструкцию, ставим бряк на доступ размером 1 байт в памяти на эту инструкцию и ждем срабатывания. После срабатывания в заголовке x64dbg будет написан ID потока.

 

420546730_.thumb.png.6a71f3937fec3c2899c55cede1e7dec7.png

 

Переходим во вкладку "Потоки", здесь нам необходим только адрес начала:

 

image.png.69bf5e9c66416236ae78a72cb82a3820.png

 

Теперь переходим к автоматизации, вся суть этого обхода в получении всех потоков и сравнении адреса начала, т.е если адрес начала равен 0x7FF730E2449D, то убиваем поток. Вот и весь обход.

 

if (reinterpret_cast<DWORD64>(thread->Win32StartAddress) == (reinterpret_cast<DWORD64>(mainModule) + 0x4490))
		{
			HANDLE hThread = OpenThread(THREAD_TERMINATE, FALSE, threadId);
			TerminateThread(hThread, 1);
			CloseHandle(hThread);
		}

 

0x4490 это относительный виртуальный адрес адреса начала потока.

 

image.png.4080de136df19c8b7680351067962e1d.png

 

 

ÐÐ¾Ñ Ð¸ вÑе ÑебÑÑа ! â боÑÑжÑÑнал Toyota Celica СлепÑÑ | DRIVE2

  • Понравилось 1
  • Плюс 2
Авторизация  


9 Комментариев


Рекомендуемые комментарии

Шикарно. (Всего 4 строки)

А могут разрабы проверку несколькими потоками запускать? С разными интервалами.

Поделиться этим комментарием


Ссылка на комментарий
Только что, Garik66 сказал:

Шикарно. (Всего 4 строки)

А могут разрабы проверку несколькими потоками запускать? С разными интервалами.

 

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

Но конкретно в этой игре, все проверки в одном потоке.

  • Плюс 1

Поделиться этим комментарием


Ссылка на комментарий

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

Поделиться этим комментарием


Ссылка на комментарий
8 часов назад, Xipho сказал:

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

 

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

Поделиться этим комментарием


Ссылка на комментарий
34 минуты назад, partoftheworlD сказал:

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

А, это было для онлайна? Интересно, что за онлайн игры, где это прокатывает 😁  За самописный хук бан? Это вряд ли.

Поделиться этим комментарием


Ссылка на комментарий
27 минут назад, JustHack сказал:

За самописный хук бан? Это вряд ли.

Некоторые игры/анти-читы(например VAC) проверяют целостность некоторого списка winapi функций, вот тебе и бан за хук.

 

29 минут назад, JustHack сказал:

Интересно, что за онлайн игры, где это прокатывает

Любая игра с анти-читом на стороне сервера в 80% случаев имеет проверку целостности кода.

  • Печалька 1

Поделиться этим комментарием


Ссылка на комментарий
1 час назад, Xhayla сказал:

@partoftheworlD, а как получить список всех потоков в чужом приложении?

Почитав документацию на MSDN

Поделиться этим комментарием


Ссылка на комментарий
В 26.08.2019 в 16:37, partoftheworlD сказал:

Почитав документацию на MSDN

Нашел как в видео инструкцию проверяющую нужный мне адрес, зашел в x64dbg(x86) в "Карта памяти" нашел его, ставлю бряк на доступ 1 байт, снимаю паузу с игры, он показывает поток основной. Разумеется если убить основной - краш игры будет.

Поделиться этим комментарием


Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×

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

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.