C++ Защита для вашего лоадера. Антидебаг без анти дебага или как на руси защиту придумывали

Можете пример создание потока с 0x40 скинуть?Не нашел у майков про это
C++:
Expand Collapse Copy
HANDLE empty;
NtCreateThreadEx(&empty, MAXIMUM_ALLOWED, nullptr, GetCurrentProcess(),
    anti_debug_thread, nullptr, 0x40, 0, 0, 0, nullptr);
THREAD_CREATE_FLAGS_BYPASS_PROCESS_FREEZE (0x40) не работает в CreateThread
 
C++:
Expand Collapse Copy
HANDLE empty;
NtCreateThreadEx(&empty, MAXIMUM_ALLOWED, nullptr, GetCurrentProcess(),
    anti_debug_thread, nullptr, 0x40, 0, 0, 0, nullptr);
THREAD_CREATE_FLAGS_BYPASS_PROCESS_FREEZE (0x40) не работает в CreateThread
Я как понял ниже 10 версии win работать не будет
 
Так зачем делать это в главном потоке если смысл дать потоку флаг 0х40 и защитить те потоки которые нужны?
в примере акцент на задержки и указание на ошибку. если ты делаешь гайд, будь добр пиши код без таких серьезных ошибок: бесконечный цикл в потоке без задержки, отсутствие информации по работоспособности флага(где и как работает).

а вот по поводу остального:
эта штука, с флагом работает только на функцию NtSuspendProcess:
C++:
Expand Collapse Copy
NTSTATUS PsSuspendProcess(_EPROCESS* Process)
{
  const auto currentThread = KeGetCurrentThread();
  KeEnterCriticalRegionThread(currentThread);

  NTSTATUS status = STATUS_SUCCESS;
  if ( ExAcquireRundownProtection(&Process->RundownProtect) )
  {
    auto targetThread = PsGetNextProcessThread(Process, nullptr);
    while ( targetThread )
    {
      // Our flag in action
      if ( !targetThread->Tcb.MiscFlags.BypassProcessFreeze )
        PsSuspendThread(targetThread, nullptr);

      targetThread = PsGetNextProcessThread(Process, targetThread);
    }
    ExReleaseRundownProtection(&Process->RundownProtect);
  }
  else
    status = STATUS_PROCESS_IS_TERMINATING;

  if ( Process->Flags3.EnableThreadSuspendResumeLogging )
    EtwTiLogSuspendResumeProcess(status, Process, Process, 0);

  KeLeaveCriticalRegionThread(currentThread);
  return status;
}

Нет, нет и нет. Если скорость позволяет то все будет работать при проверке в самом потоке.
Проверка в самом потоке не работает , если ты будешь проверять это без задержки, что-то может промелькнуть, но тогда у тебя нагрузка на ЦП будет очень большая(привел пример нагрузки в предыдущем посте). при заморозке и разморозке потока, он сам не поймет, что был заморожен, единственный вариант чекать из другого потока.
 
У ТЕБЯ НАГРУЗКА НА CPU 33%, В САМОМ ПОТОКЕ 16%.ТЫ У СЕБЯ В ВИДЕО ПОКАЗЫВАЕШЬ ПРИМЕР БЕЗ SLEEP.
я о чем уже второй раз пишу? читаешь вообще?
Sleep(1) поставь, тогда ловить не будет, либо поймает с результатом 1 на 1000, но кому нужен этот рандом?
 
У ТЕБЯ НАГРУЗКА НА CPU 33%, В САМОМ ПОТОКЕ 16%.ТЫ У СЕБЯ В ВИДЕО ПОКАЗЫВАЕШЬ ПРИМЕР БЕЗ SLEEP.
я о чем уже второй раз пишу? читаешь вообще?
Sleep(1) поставь, тогда ловить не будет, либо поймает с результатом 1 на 1000, но кому нужен этот рандом?
xD
Ты видео вообще слушал? Я сказал делайте в отдельных потоках тоже и там ясно видно закомментированный слип, кому ты что доказыаешь(
 
Мда, друг, ты чего зеродеи сливаешь?)

А теперь серьезно:
1) Тайминговые проверки - это, в буквальном смысле, прошлый век, но техника, конечно, действенная и имеет место быть.
2) Пример с ResumeThread - эт прост бред сумасшедшего, не думаю, что требуются какие-то объяснения.
*Для полноты картины не хватает какого-нить IsDebuggerPresent и CheckRemoteDebuggerPresent*

Мне не понятно только одно, а в чем смысл этой темы, если все - это можно найти по первому же запросу в гугле?
 
От такой защиты толку нет) Если только от тех кто вообще не сооброжает).
Варианты обхода по этому коду
1. Убить поток
2. Пропатчить функцию потока
3. Пропатчить функцию закрытия процесса
и тд. Это самые простые варианты)
Лучший метод просто шифровать нормально чтоб при дампе или дебаги не разобрать было

Если ты накроешь прогу протектором там намного лучше будет антидебаг что твой код не какой роли не сыграет
 
И в сумме такой код в вашем потоке во первых будет критовать при заморозке его самого так еще и при заморозке другого потока
в видео также сказано что такую проверку можно добавлять и в другие потоки получая их хендлы
2. Пропатчить функцию потока
3. Пропатчить функцию закрытия процесса
P.s это только пример, пожалуйста, учтите что это легко патчится.
Дисклеймер. Не стоит сильно воспринимать всерьез сказанное в этой теме. Просто делюсь тем что смог случайно наверное реализовать
Лучший метод просто шифровать нормально чтоб при дампе или дебаги не разобрать было

Если ты накроешь прогу протектором там намного лучше будет антидебаг что твой код не какой роли не сыграет
ну а после этих слов я впринципе перестану воспринимать твое мнение
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Можно также использовать эту тему ->
Пожалуйста, авторизуйтесь для просмотра ссылки.

Как в свои добрые годы делал меддог, прятал лоадер в блокнот.
 
Я как-бы все понимаю.
Но зачем это?
Что трудного поставить проверку лицензии на сервере,php скрипте?
И что останется после проверки на сервере?
Простое скачивание длл, на диск или в память апдейтора.
А что мешает ее на сервере зашифровать, а при инжекте разшифровать.
Как минимум то, что ты ее в конечном итоге расшифруешь на клиенте, и на этом моменте автоматический пойдешь нахуй со своей серверной криптой
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как минимум то, что ты ее в конечном итоге расшифруешь на клиенте, и на этом моменте автоматический пойдешь нахуй со своей серверной криптой
Как и в любом другом случае, в клиенте будет конечная длл.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как и в любом другом случае, в клиенте будет конечная длл.
Но длл можно передать таким способом. Что 1 дампом кряк не оформить

ее шифрование это дело юзелесс
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ребята,эта тема просто создана для рофлов. Просто успокойтесь и получайте удовольствие :smile:
Screenshot_186.png
 
Назад
Сверху Снизу