убить отладчик

Тема в разделе "WASM.RESEARCH", создана пользователем HuXTUS, 8 янв 2007.

  1. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Здравствуйте!
    Нашел я недавно кейген к игрушке Ricochet Lost Worlds:Recharged от team ECLIPSE
    Красивый такой... решил посмотреть на чем написан. Оказалось чем-то упакован.
    Ну ладно, думаю, щас я тебя распакую. Открываю в Olly, нажимаю RUN, и тут Оля вылетает...
    Попробовал открыть в WinDasm'е(там тоже отладка есть :) ), но и его эта прога убивает...
    Пробовал ставить бряки(hardware и обычные) на TerminateProcess, TerminateThread, GetProcAddress :) итп,
    все равно не могу обойти эту ловушку.
    Внимание вопрос :) :
    как в принципе прога может убить свой отладчик?
    Я понимаю, зная определенные отладчики, можно поискать заголовок окна, ..., а потом прибить его,
    но это не то случай, да и застраховаться от всех отладчиков не получится.
    P.S. Я не риппер если что, мне чужого не надо. Спрашиваю для самообразования.
    Спасибо.
     
  2. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Можно только в системах класса НТ.

    Все завязано на DebugActiveProcessStop, была статья где-то но имхо ерунда это все. Написать можно минут за 20 :)
     
  3. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Вроде можно изуродовать обработчик исключений и устроить исключение.
     
  4. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    CyberManiac
    В таком случае, если получится конечно же, вместе с отладчиком завершится и отлаживаемое приложение :)
     
  5. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    _Serega_
    А что, отлаживаемое приложение при этом оставалось в живых?
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    _Serega_
    Если убить отладочный процесс, отлаживаемый тоже помрёт.
     
  7. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    CyberManiac
    А какой обработчик тогда изуродовать? И почему отладчик при этом должен издохнуть?
    Quantum
    Я разве не так сказал?
     
  8. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Quantum
    Ну, я предлагал несколько иное: путем изнасилования SEH и перехватчика необработанных исключений довести отлаживаемый процесс до безмолвного издыхания. Отчего издохнет и отладчик. С интегрированными в IDE отладчиками такое у меня как-то получилось, хотя и против моей воли :) Не думаю, что встроенный долбуггер W32Dasm (ему лет даже еще больше, чем я W32Dasm'ом пользуюсь, а я с него начинал) их сильно превосходит в области работы с исключениями.
     
  9. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    ...понял...

    Quantum
    Автор топика ставит вопрос о завершении отладчика без завершения работы отлаживаемого приложения.

    И это возможно только на НТях, при помощи деаттачинга отладчика.

    Эта фича реализуется через функцию DebugActiveProcessStop, после чего можно смело прикрывать отладчик функцией TerminateProcess и это не приведет к завершению отлаживаемого приложения.
     
  10. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    .... а бряк у HuXTUS не выскакивает по той причине что дебуггер уже отключен от отлаживаемого приложения....
     
  11. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    _Serega_
    Он Вам приватно об этом сообщил?
     
  12. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Я умею внимательно читать вопрос:
     
  13. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    _Serega_
    Вы умеете читать между строк :)

    Отсюда следует, что приложение продолжает работать?

    И, стало быть, не совершить при этом суицид?
     
  14. Anonymous

    Anonymous New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2006
    Сообщения:
    24
    К примеру, она может:
    1. Удостоверится что есть ф-я DebugActiveProcessStop.
    2. Попытаться DebugActiveProcess каждый процесс, в случае успеха сразу делать DebugActiveProcessStop.
    3. Тот, который его отлаживает, не получился сделать DebugActiveProcess.
    4. Сделать в него инжект, потом DebugActiveProcessStop для своего процесса и убить.

    Метод конечно извращенный, но "законный".
     
  15. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    неточное утверждение, NT и 2k тоже платформа NT, попробуй отдетач там дебаггер =)
     
  16. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Я ничего такого не сказал.
    Прога умирает вместе с отладчиком!
    Меня просто заинтересовала любая реализация подобного поведения (для использования в своей защите/для обхода вражеской обороны).
     
  17. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    ой :)
    позор на мою седую голову :)
    догадался сунуть прогу в PeID, и вот что он показал: tElock 1.0 (private) -> tE!
    Снял защиту автораспаковщиком...и...и все ))) все заработало, ничего не вылетает.
    Спасибо всем за ответы.
    С уважением.
     
  18. HuXTUS

    HuXTUS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2007
    Сообщения:
    240
    Вот, что я смог сделать по этой теме.
    Код, приведенный ниже каким-то образом убивает Ольку(со всеми плагинами) и ВинДасм если надо.
    По крайней мере у меня :)
    Если чесно, то, что получилось, вышло скорее случайно,
    изначально я шел немного другим путем:
    находил отладчик и к нему цеплялся DebugActiveProcess,
    а параллельно запускался "левый" процесс, которому передавался PID
    отлаживаемого процесса и который должен был его TerminateProcess.

    Идея появилась так: Натравил две Оли друг на друга(File->Attach) и одну
    насильно завершил. Получил BSOD. (у меня WinXP Pro SP2)

    Вот. Но в итоге все сократилось и получился такой код.
    Недостаток: он сам не в состоянии определить кто его отлаживает, поэтому
    просто ищет либо окно Оли, либо дасма.

    Код:


    Код (Text):
    1. start: 
    2.     jmp @f
    3.     szShellApi              db  'Shell32',0
    4.     szProgram               db  'killll.exe',0
    5.     szDebugger              db  'OLLYDBG',0         ;dlja Olly
    6. ;   szDebugger              db  'OWL_Window',0      ;esli nado ubitj WinDasm
    7.     szMutex                 db  'pizdez',0
    8.     @@:
    9.  
    10.     invoke OpenMutex, 1, TRUE, offset szMutex
    11.     cmp eax, 0 
    12.     jnz @f
    13.     invoke CreateMutex, 0, 0, offset szMutex
    14.     invoke WinExec, offset szProgram, SW_SHOW
    15.     jmp @kill  
    16.     @@:
    17.  
    18.     ;POISK DEBUGGER'a
    19.     @kill:
    20.     invoke FindWindow, offset szDebugger, NULL
    21.     push eax
    22.     invoke GetWindowThreadProcessId, eax, esp
    23.     pop eax
    24.     ;
    25.     invoke DebugActiveProcess, eax  ;eax == PID debugger'a
    26.  
    27. end start
     
  19. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Странно. Но у меня не падает ни на WinXP Pro SP2 ни на Vista 32bit
    Просто при втором аттаче они обе виснут, что очевидно.
     
  20. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    это не серьезно, класс окна OLLYDBG в OllyDbg.exe только полные ламеры не патчат