райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Рейтинг: 69.1% · 33 голосов
Capture The Flag, реверс бинарных файлов, разработка эксплойтов, ассемблер, форензика, крэкми и задачи по информационной безопасности.
Ответить
Аватара пользователя
kate2000
Сообщения: 6
Зарегистрирован: 11 май 2026, 15:28

райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение kate2000 »

Застрял на крэкми с crackmes.one, уровень 3/6. Бинарь под Windows x86-32. При запуске под x64dbg программа сразу вылетает с 'wrong'. Судя по всему, там анти-дебаг. Нашёл вызов IsDebuggerPresent, запатчил возвращаемое значение на 0 через условный перехват — но всё равно падает. Есть ещё что-то, что я пропускаю?
👍 ❤️ 🔥1 😄 🤔2
✔ Лучший ответ выбран автором и совпадает с автоматическим подбором — jpearce
ScyllaHide реально спасает жизнь в таких случаях. Но если хочешь разобраться руками — вот полный список того что стоит проверить: 1) PEB.BeingDebugged (тот самый IsDebuggerPresent), 2) PEB.NtGlobalFlag (значение 0x70 при дебаггере), 3) heap flags в PEB.ProcessHeap, 4) NtQueryInformationProcess с классом 7 (ProcessDebugPort), 5) timing-атаки через RDTSC или GetTickCount — если между двумя…
Перейти к ответу →
Аватара пользователя
svelte1
Сообщения: 30
Зарегистрирован: 13 май 2026, 13:06

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение svelte1 »

IsDebuggerPresent — это лишь один из десятка способов. Следующий кандидат — CheckRemoteDebuggerPresent, его часто ставят в паре. Ищи в импортах или через строковый поиск 'NtQueryInformationProcess' — там флаг ProcessDebugPort тоже выдаёт дебаггер. В x64dbg есть плагин ScyllaHide, он закрывает большинство стандартных техник одним кликом.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
jpearce
Сообщения: 47
Зарегистрирован: 11 май 2026, 23:34

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение jpearce »

✔ Лучший ответ — выбран автором и совпадает с авто-подбором
ScyllaHide реально спасает жизнь в таких случаях. Но если хочешь разобраться руками — вот полный список того что стоит проверить: 1) PEB.BeingDebugged (тот самый IsDebuggerPresent), 2) PEB.NtGlobalFlag (значение 0x70 при дебаггере), 3) heap flags в PEB.ProcessHeap, 4) NtQueryInformationProcess с классом 7 (ProcessDebugPort), 5) timing-атаки через RDTSC или GetTickCount — если между двумя вызовами прошло слишком много времени, значит шагают по коду. Для RDTSC-трюков помогает плагин 'FixTSC' или патчинг самих инструкций.
👍2 ❤️1 🔥2 😄 🤔1
Аватара пользователя
hunter22
Сообщения: 50
Зарегистрирован: 11 май 2026, 00:25

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение hunter22 »

Тайминговые проверки вообще самые неприятные — их скриллой не обойдёшь. Я обычно ищу паттерн: два вызова RDTSC подряд, между ними какая-то операция, потом cmp и jmp. Патчу jmp на безусловный или просто ставлю брейк после второго RDTSC и руками правлю регистры.
👍1 ❤️1 🔥1 😄 🤔
Аватара пользователя
burg0809
Сообщения: 22
Зарегистрирован: 15 май 2026, 01:05

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение burg0809 »

Можешь скинуть хэш бинаря или ссылку? Интересно глянуть. В крэкмях уровня 3 ещё иногда встречается SEH-антидебаг — намеренно вызывают исключение и проверяют кто его обрабатывает. Под отладчиком исключение перехватывает дебаггер, а не обработчик программы, и ветка кода идёт другая.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
svelte1
Сообщения: 30
Зарегистрирован: 13 май 2026, 13:06

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение svelte1 »

Ещё вариант который часто забывают — проверка родительского процесса. Если ppid не explorer.exe (или конкретный лаунчер), программа считает себя запущенной под дебаггером. Лечится либо плагинами, либо запуском x64dbg от имени Explorer через inject.
👍 ❤️2 🔥1 😄 🤔
Аватара пользователя
rocknrolla
Сообщения: 7
Зарегистрирован: 13 май 2026, 09:48

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение rocknrolla »

В итоге как решил? Пиши райтап — такие вещи полезно документировать, потом сам же и забудешь через полгода какой трюк там был.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
fpga_lord
Сообщения: 56
Зарегистрирован: 16 май 2026, 06:00

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение fpga_lord »

@kate2000, раз патчишь IsDebuggerPresent а оно всё равно валится, почти наверняка читают PEB напрямую через fs:[30h]+2, в обход импорта, поэтому твой перехват мимо. ScyllaHide это закроет одним кликом. Но сначала по-простому, поставь хардварный бряк на чтение байта BeingDebugged и посмотри кто его трогает, сразу вылезет вторая проверка которую пропустил.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
lxxyl
Сообщения: 4
Зарегистрирован: 15 май 2026, 04:31

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение lxxyl »

@jpearce, список годный, только NtGlobalFlag не везде 0x70, значение собирается из FLG_HEAP_ENABLE_TAIL_CHECK и компании, под x64 смещение другое. Я бы ещё дописал старый трюк с OutputDebugStringA, под дебагом не выставляет ошибку и по GetLastError палят отладчик. Хотя для уровня 3 из 6 это уже перебор, там скорее всего тупо PEB.BeingDebugged и всё.
👍 ❤️ 🔥 😄 🤔1
Аватара пользователя
GolangHacker
Сообщения: 6
Зарегистрирован: 27 май 2026, 20:19

Re: райтап по крэкми с анти-дебаг защитой IsDebuggerPresent обход

Сообщение GolangHacker »

уровень 3 из 6 на crackmes.one, анти-дебаг там обычно учебный, не накручивайте. Скрилла плюс бряк на entry point и за полчаса вскрывается. Если реально застрял на день, ты что-то базовое пропустил, типа что TLS callback отрабатывает раньше main и проверка сидит именно там.
👍1 ❤️1 🔥1 😄 🤔2
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «CTF и реверс-инжиниринг»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость