Сейчас на форуме: rmn, exp50848 (+9 невидимых)

 eXeL@B —› Основной форум —› Анти-отладочный трюк против срабатывания точек останова
Посл.ответ Сообщение

Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 29 ноября 2014 17:55
· Личное сообщение · #1

В некоторых протекторах реализован трюк с динамическим блокированием работы точек останова. ring3 !!! Не с проверкой, а именно динамическим блокированием (ну или я не знаю, как этот термин правильно обозвать). А именно: ставлю я бряк (и не важно - аппаратка/программка). Управление докатывается до точки (100% уверен, что докатывается) и ... процесс завершается (точнее вываливается сообщение системное, что single step на адресе, где стоит точка остнова-терминате процесс ор дебаг). Складывается ощущение, что ИЛИ стоит хук между бряком и передачей брозд правления отладчку. НО ГДЕ ЕГО СТАВЯТ? KiUserApcDispatcher и тд - там чисто все. ИЛИ может защитный механизм счищает каллбеки отладчика...
зы: На крайняк, хотя бы дайте литературу, как именно реализован механизм срабатывания точек останова в ольке (за KiUserApcDispatcher читал у Криса, но тут скорее всего не он).




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 29 ноября 2014 18:10
· Личное сообщение · #2

KiUserApcDispatcher к исключениям не имеет отношения-это раз, KiUserExceptionDispatcher имеет.
Второй-коль single step на адресе, то это обычный TF или DR бряк, который ты нефига не поймал, и он свалил программу.
Так что скорее всего ищи косяк у себя, если код твой. Если олька, видимо, криво исключения там обрабатываются.
А схема исключений простая: исключение-уход в ядро-вызов отладчика-вызов KiUserExceptionDispatcher, он уже вызывает вехи, сехи и Unhandled.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 29 ноября 2014 18:31
· Личное сообщение · #3

в KiUserExceptionDispatcher тоже ничего нет.




Ранг: 568.2 (!), 464thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 29 ноября 2014 19:06
· Личное сообщение · #4

ELF_7719116

4716_29.11.2014_EXELAB.rU.tgz - test.zip

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 30 ноября 2014 10:27
· Личное сообщение · #5

ClockMan пишет:
test.zip

Не-е-е-т! Там явно не этот баян с SEH-обработчиком используется, 2я олька корректно его отрабатывает-отладчик не виден. Именно с перехватом какой-то трик.



Ранг: 33.4 (посетитель), 24thx
Активность: 0.020
Статус: Участник

Создано: 30 ноября 2014 17:03
· Личное сообщение · #6

ELF_7719116
может оно?

5.3. ThreadHideFromDebugger
This technique uses the API ntdll!NtSetInformationThread() which is usually used for setting a thread’s priority. However, the said API can also be used to prevent debugging events to be sent to the debugger.
The parameters to NtSetInformationThread() are shown below. To perform this technique, TheadHideFromDebugger (0x11) is passed as the ThreadInformationClass parameter, ThreadHandle is usually set to the current thread handle (0xfffffffe):
NTSTATUS NTAPI NtSetInformationThread(
HANDLE ThreadHandle,
THREAD_INFORMATION_CLASS ThreadInformationClass, PVOID ThreadInformation,
ULONG ThreadInformationLength );
Internally, ThreadHideFromDebugger will set the HideThreadFromDebugger field of the ETHREAD16 kernel structure. Once set, the internal kernel function DbgkpSendApiMessage(), whose main purpose is to send events to the debugger is never invoked.


 eXeL@B —› Основной форум —› Анти-отладочный трюк против срабатывания точек останова
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати