Отладка на самом низком уровне

Тема в разделе "WASM.RESEARCH", создана пользователем Broken Sword, 17 авг 2005.

  1. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    Интересует вопрос - возможна ли отладка программ, исполняюшихся на интеловском проце, помимо обычных вариантов с программными отладчиками? Т.е. какой-либо интерфейс, позволяющий цепляться прямо на шину. Что-то типа JTAG на микроконтроллерах. И еще - есть ли такая фигня в 64-разрядных процах?
     
  2. aSL

    aSL New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    43
    Адрес:
    Russia


    Смотреть в сторону http://developer.amd.com/simnow.aspx Правда, не на железе, но все-таки...
     
  3. Maggot

    Maggot New Member

    Публикаций:
    0
    Регистрация:
    31 июл 2005
    Сообщения:
    17
  4. ssx

    ssx Member

    Публикаций:
    0
    Регистрация:
    19 авг 2003
    Сообщения:
    336
    Iнет

    ты о чем?
     
  5. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    чето либо я вас не пойму, либо одно из двух.



    имею ввиду следующее: нек-рое аппаратное устройство, которое цепляется к cpu через какой-то интерфейс и с пом. к-рого можно производить отладку исполнения/чтения/записи памяти и т.п.
     
  6. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Broken Sword





    Цитата из книжки "Процессоры Pentium 3, Athion и другие":



    Все процессоры Pentium имеют средства SMM, возможности которых расширялись по мере появления новых моделей.

    Средства тестирования включают возможность выполнения встроенного теста BIST (Built-In Self Test), обеспечивающего выявление ошибок микрокодов и программируемых логических матриц, тестирование кэш-памяти инструкций и данных, буфера страничной переадресации и ROM. Все процессоры имеют стандартный тестовый порт IEEE 1149.1, позволяющий тестировать их с помощью интерфейса JTAG.





    Ну а конкретное описание наверно на сайте интела нужно искать.
     
  7. Quantum

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

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Black_mirror

    Удалённая отладка (через сеть или COM-порт) посредством WinDbg слегка напоминает работу с JTAG...
     
  8. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    Я действительно слишком туманно выразился. Хочется узнать немного не о том.



    В обычных настольных системах отладчик тесно работает в среде ОС и исполняемой программы. Т.е. защита исполняемой программы может как угодно влиять на отладчик, использовать всякие анти-отладочные трюки и каждый виток антиотладочных трюков пораждает новый виток анти-антиотладочных и т.д.



    Неужели нет возможности вообще вылезти из этой песочницы и поместить "отладчик" ниже программного окружения? Какой-то свой набор отладочных регистров, доступ к которым программными методами невозможен... Тупо подключаемся к ногам на проце и все провода идут в какой-нить ящик ака ноутбук, на нем мы видим все регистры в любой момент, ставим аппаратные брейкпоинты, читаем/пишем память, и все это в обход программного окружения целевой машины.

    Понимаете? Это означает конец любым программным средствам защиты. Может кто-либо опровергнуть данное утверждение?



    Вот насчет порта IEEE 1149.1 - это может быть как раз то что нужно...
     
  9. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    Broken Sword

    Неужели нет возможности вообще вылезти из этой песочницы...

    Помнится были такие штуки как In-Circuit Emulator'ы :), для 86, 186 и 286 - видел своими глазами, на 86/186 - даже сам отлаживал, говорят есть даже для 386, но не уверен, для более новых нет - слишком сложно, да и начиная с 386 как известно Intel решила убрать возможности аппаратной отладки в пользу программной (тогда всякие DRx и появились). Но отлаживать на ICE'ах можно было все что угодно, особенно если корректно сэмулируешь окружение/обвязку с которыми программа работает.



    Всякие ICE/JTAG и пр. - не панацея, и их можно "обойти". Живой пример: на TMS320C55 пытался отлаживать один RT-процесс, так пришлось ставить анализатор шины в виде отдельной плиски которая писала состояния шины в буфер, потому что никакой JTAG не спасал - в чистом прогоне одно, под отладкой - другое (и это при том что программа моя, и не содержит противоотладочных средств)...



    Отладка изначально задумывалась как "дружественный" программе процесс! Если программа отладке будет сопротивляться - то никуда из этой "песочницы" не деться! Именно это насколько я понял и имела ввиду Intel когда отказалась от поддержки полной аппаратной отладки. Тем более, есть противоотладочные приемы специально для аппаратных эмуляторов, они основаны на том, что окружение процессора (шины, устройства, всякая прочая аппаратура) не эмулируются/контролируются целиком! А если пытаться сэмулировать/контролировать вообще все - то да, конечно, все получится, но это _нереально_ сложно, да и нафиг никому не нужно, потому что никто не разберется в таком потоке информации со всех у-в...



    Убрать влияние ПО (ОС) полностью нельзя, т.к. там есть много завязок на аппаратуру: тикают таймеры, бегают транзакции шин, работает dma, возникают асинхронно аппаратные прерывания и т.д. Ну и как это _все_ контролировать? А ведь любое из этих событий можно использовать для антиотладочных целей...



    Это означает конец любым программным средствам защиты. Может кто-либо опровергнуть данное утверждение?

    Я могу :)

    Ничего это не означает, т.к. закон есть закон: "на каждый замок найдется свой ключ", и он еще ни разу не нарушался. А методы противодействия аппаратным отладчикам есть и они даже давно используются в некоторых спецушных микроконтроллерах :)... Разве что в PC их пока нет в явном виде, но если понадобится - то нет проблем перенести.
     
  10. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    платформа ZX Spectrum. Аппаратный дебагер/etc Multiface, а позже встроенные в Scorpion монитор и отладчик.

    Привело к зашифровыванию/расшифровке блоков кода на ходу и хорошей проверке железа, да так что теперь проги на эмулях часто не идут.
     
  11. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    все ясно :dntknw:
     
  12. ViRUS

    ViRUS New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2005
    Сообщения:
    10
    Адрес:
    Russia
    А ежели тактовый генератор на ключ заменить? Ведь все таймеры и иже с ними на генератор завязаны. Подал импульс с ключа - машина один такт отработала. Долго, но можно пошагово смотреть, что на процессоре выполняется.



    ЗЫ: Туплю...
     
  13. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    Хорошо, а если зайти с другого боку? Виртуальные машины. Кто может высказать трезвую мысль - можно ли присобачить теоретически отладчик к виртуальной машине, который будет работать не на ней?
     
  14. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    ViRUS

    Бедный процессор. Он наверняка перестанет работать раньше, чем частота ядра снизится на 80% от номинальной. Про однотактовый режим и вовсе нечего говорить.
     
  15. Nimnul

    Nimnul New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2005
    Сообщения:
    136
    Адрес:
    не Китай
    Broken Sword



    Напиши плагин для отладки под ВМварь, а может уже кто то и написал.
     
  16. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
  17. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229