Сейчас на форуме: bartolomeo, -Sanchez- (+4 невидимых)

 eXeL@B —› Вопросы новичков —› SEH vs debuggers (SI)
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 апреля 2006 14:32
· Личное сообщение · #1

Можно ли защититься от SoftIce с помощью SEH?
Почему я спрашиваю - Касперски в своих "Фундаментальных основах хакерства" говорит, что отладчики, в том числе SoftIce, плохо переносят программы с SoftIce.

Пишу простенькую програмку:

#include <windows.h>
char* str="Example1";
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow)
{
__try
{
int a=1;
int b=1;
int c=c/(a-b);
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
MessageBox(0,str,str,0);
}
return 0;
}

Проверял данный код в OllyDbg - все правильно, под отладчиком возникает исключение примерно в месте int c=c/(a-b). Там встречает инструкция div чего-то-там... А вот вот в айсе (4.05 для win9x) данная програмка прогоняется без особых проблем.
Может мне кто-то объяснить в чем загвоздка? Если я делаю что-то неаправильно, то тогда каким образом использовать SEH для "ловли" SoftIce?




Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 13 апреля 2006 16:23
· Личное сообщение · #2

MarQus
Посмотри на WASM wasm.ru/publist.php?list=21 статьи Matt Pietrek / пер. Oleg_SK, SI - Win32™ SEH изнутри , 3 части

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться





Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

Создано: 14 апреля 2006 12:18
· Личное сообщение · #3

MarQus
Можно ли защититься от SoftIce с помощью SEH?
в какой-то степени - да. например, tElock как раз так и делает - генерит исключение, а в своём обработчике играет с отладочными регистрами, определяет, куда двигаться дальше.
но в таком случае простым _try не обойтись, ты должен написать свой обработчик.
но учти, что софтайс прекрасно показывает все seh фреймы, так что узнать, где находится твой обработчик, и что он делает, не составит труда
что до OllyDbg, то в настройках можно сказать, чтобы исключения обрабатывал "родной" обработчик исключений самой программы, тогда оля будет брякаться только в том случае, если "родной" handler не отработал

-----
EnJoy!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 14 апреля 2006 12:19
· Личное сообщение · #4

MarQus FAULTS ON

-----
Yann Tiersen best and do not fuck




Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 апреля 2006 23:33
· Личное сообщение · #5

Этот пример с SEH - это лишь затруднение исследования,
и софт-айс лишь не передаст пошаговое управление, т. е. нужно точку останова "в ручную" останавливать, такая же ситуация с отладчиком под IDA PRO.

Интересней случай с SEH: если мы в программе вызываем отладочное прерывание, то в софт-айсе передача управления в обработчик исключения будет не с команды icebp (int 3), а с места после отладочного прерывания и по структуре CONTEXT это можно посмотреть, а дальше все зависит от вашей фантазии. Так многие упаковщики делают

Еще soft-ice хорошо ловится на старый прием: потерю трассировачного флага, проверял,
прием глупый, но работает


 eXeL@B —› Вопросы новичков —› SEH vs debuggers (SI)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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