Перейти к содержанию

Разбор защиты и обход примитивных анти-реверс техник


Рекомендуемые сообщения

ИНИЦИАЛИЗАЦИЯ ЗАЩИТЫ

Перед тем как выводить какое либо приветствие на экран, таск проверяет флаг NtGlobalFlag из структуры PEB:

spacer.png

 

mov eax, dword ptr fs:[30] - загружает в регистр EAX указатель на PEB структуру
test byte ptr ds:[eax+68],70 - провряет флаг NtGlobalFlag по смещениею PEB+0x68 для 32-разрядной или PEB+0xBC дя 64-разрядной / Если флаг равен 0x70(FLG_HEAP_ENABLE_TAIL_CHECK (0x10)
     + FLG_HEAP_ENABLE_FREE_CHECK (0x20)
	 + FLG_HEAP_VALIDATE_PARAMETERS (0x40)) - процесс создан из под отладчика.
jne debug_detected

Обойти это можно как изменением PEB структуры, так и просто пропатчить jne на NOP

 

Далее идет следующий трюк, создается поток с проверкой где в цикле вызывается функция IsDebuggerPresent:

spacer.png

 

Обойти можно разными путями, начиная от проNOPить создание потока, изменить пролог функции с push на ret или просто изменить логику внутри патчем cmp или jne\je

 

Далее идет последний трюк, который так же будет выполняться в отдельном потоке как и предыдущий:

spacer.png

 

Используются следующие функции:

CreateToolhelp32Snapshot - Делает снимок процессов
Process32Next - Получает информацию о следующем процессе
Process32First - Получает информацию о первом процессе

 

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

spacer.png

 

В цикле, как и в предыдущем трюке, будут искаться процессы, которые указаны выше, при детекте которых таск будет закрываться.

 

АЛГОРИТМ

:lol:

Разбирать алгоритм нет никакого смысла(и желания), ибо сгенерированный ключ по имени палится в регистре перед сравнением.

spacer.png

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

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

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