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

Discussion in 'WASM.NT.KERNEL' started by Clerk, Aug 23, 2008.

  1. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Всем привет.
    Существует ли способ отследить исполнение инструкции CPUID ?
    Может в MSR есть биты какие для запрета её исполнения.
    Использовать трассировку, полную эмуляцию всего кода и микрокод патчить не подходит.
    Какие у кого мысли есть ?
     
  2. diamond

    diamond New Member

    Blog Posts:
    0
    Joined:
    May 21, 2004
    Messages:
    507
    Location:
    Russia
    Можно задействовать технологии виртуализации - AMDшная SVM позволяет перехватывать CPUID, Intelовские возможности не смотрел. Но это не пойдёт на старых процессорах. Без виртуализации и трассировки/эмуляции - afaik никак.
     
  3. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Нужно именно для интел(P4).
     
  4. k3internal

    k3internal New Member

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

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    k3internal
    > vt-x
    Где в манах об этом почитать можно, может у меня это тоже есть надеюсь ?
     
  6. diamond

    diamond New Member

    Blog Posts:
    0
    Joined:
    May 21, 2004
    Messages:
    507
    Location:
    Russia
    Трёхтомник интела, том 3, главы 19-27. Проверка на поддерживаемость: cpuid.1:ecx.vmx[bit 5] = 1.
     
  7. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Спасибо.
     
  8. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    FEATURE_VMX equ 100000b ;VMX Virtual Machine Extensions The processor supports Intel® Virtualization Technology.
    Сброшен, мой проц это не поддерживает.
     
  9. k3internal

    k3internal New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    607
    Clerk
    ну тагда песец. пакупать тебе новыйпроц.новую мать... бп..
     
  10. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    k3internal
    ИБП полкиловатный, думаю достаточно, мама тоже норм, вот проц кривой немного.
    Может есть недокументированые MSR, где этим можно управлять, наверно единственное решение.
     
  11. angren

    angren New Member

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

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Не поддрживает процессор VMX, только трассировщик который почти закончен тут поможет. Можно удалить топик.
     
  13. PaCHER

    PaCHER New Member

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

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    PaCHER
    Ахаха угарал от смеха как прочитал этот топик на кряклабе.
     
  15. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Ну попробуй пересобрать self/cross -modifying код.
     
  16. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Кстати, всеобщее заблуждение касательно обнаружения трассировки замером временных интервалов - подавление планирования выделяет значительно больше процессорного времени потоку, отнимая от остальных, в простейшем случае повышением приоритета потока вплоть до реалтайма.
     
  17. leo

    leo Active Member

    Blog Posts:
    0
    Joined:
    Aug 4, 2004
    Messages:
    2,542
    Location:
    Russia
    Не понял, что ты имеешь в виду под "всеобщим заблуждением" ? Может оно не всеобщее, а твое собственное ? ;)
     
  18. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Это не моё, предыдущий пост это обьясняет. Каждый кто был спрошен утверждали - имеет место быть замедление исполнения кода при трассировке. Это не так.
     
  19. Medstrax

    Medstrax Забанен

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

    leo Active Member

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

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