Как отследить исполнение CPUID

Тема в разделе "WASM.NT.KERNEL", создана пользователем Clerk, 23 авг 2008.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Всем привет.
    Существует ли способ отследить исполнение инструкции CPUID ?
    Может в MSR есть биты какие для запрета её исполнения.
    Использовать трассировку, полную эмуляцию всего кода и микрокод патчить не подходит.
    Какие у кого мысли есть ?
     
  2. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Можно задействовать технологии виртуализации - AMDшная SVM позволяет перехватывать CPUID, Intelовские возможности не смотрел. Но это не пойдёт на старых процессорах. Без виртуализации и трассировки/эмуляции - afaik никак.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Нужно именно для интел(P4).
     
  4. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Clerk
    Какие то последние модели пня 4 уже снабжались vt-x. Если поддержки аппаратной в проце нет, тогда только борщ. т.е. полный эмулятор.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    k3internal
    > vt-x
    Где в манах об этом почитать можно, может у меня это тоже есть надеюсь ?
     
  6. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Трёхтомник интела, том 3, главы 19-27. Проверка на поддерживаемость: cpuid.1:ecx.vmx[bit 5] = 1.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Спасибо.
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    FEATURE_VMX equ 100000b ;VMX Virtual Machine Extensions The processor supports Intel® Virtualization Technology.
    Сброшен, мой проц это не поддерживает.
     
  9. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Clerk
    ну тагда песец. пакупать тебе новыйпроц.новую мать... бп..
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    k3internal
    ИБП полкиловатный, думаю достаточно, мама тоже норм, вот проц кривой немного.
    Может есть недокументированые MSR, где этим можно управлять, наверно единственное решение.
     
  11. angren

    angren New Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    19
    Получилось изменить результат, кот возвращается в EBX, ECX, EDX при EAX = 0. Вместо GenuineIntel - моя строка. НО это только на тех процах, где есть VT-x( все последние + Pentium D 920-960)
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Не поддрживает процессор VMX, только трассировщик который почти закончен тут поможет. Можно удалить топик.
     
  13. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Clerk
    Посмотри в сторону Рекомпиляции. На кряклабе выкладывали исходники vx_dll.
    h__p://cracklab.ru/f/index.php?action=vthread&forum=6&topic=11513
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    PaCHER
    Ахаха угарал от смеха как прочитал этот топик на кряклабе.
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ну попробуй пересобрать self/cross -modifying код.
     
  16. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Кстати, всеобщее заблуждение касательно обнаружения трассировки замером временных интервалов - подавление планирования выделяет значительно больше процессорного времени потоку, отнимая от остальных, в простейшем случае повышением приоритета потока вплоть до реалтайма.
     
  17. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Не понял, что ты имеешь в виду под "всеобщим заблуждением" ? Может оно не всеобщее, а твое собственное ? ;)
     
  18. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Это не моё, предыдущий пост это обьясняет. Каждый кто был спрошен утверждали - имеет место быть замедление исполнения кода при трассировке. Это не так.
     
  19. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Точно, я всегда подозревал, что временнЫе задержки при трассировке - полная чушь. Clerk,
    спасибо дружище, за такую редкую находку. Я думаю еще недолго - и ты сумеешь доказать, что трассировка еще и значительно ускоряет выполнение кода, дерзай, успехов тебе.
     
  20. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Ежу понятно, что замедление есть в любом случае, т.к. вместо единиц-долей такта на выполнение каждой инструкции при трассировке тратится как минимум десятки-сотни-тысячи тактов процессора. Поэтому тут вопрос только в том, чем и как измерять время выполнения кода. "Предыдущий пост это объясняет" только для замера больших интервалов, на которых сказывается планирование. А если натыкать rdtsc или QueryPerf.. через каждые 10-100 инструкций критичного участка кода, то никакой запрет планирования тут "время не остановит". Остановить его может перехват rdtsc, но вот что дальше делать с этим перехватом - большой вопрос, т.к. тупой сброс или установка фикс.дельты как в OllyAdvanced, Phantom и т.п. это чистый наивняк, который палится на первой же ловушке ;)

    PS: Неоценимый вклад в дело борьбы с rdtsc внесли интелы, со своим дебильным HT, из-за которого приходится или загрублять или усложнять измерения - штоб он сдох, собака :lol: