to volodya: механизм TSS задач процессора знаешь? короче там есть таблица задач, на нее регистр GDT и LDT указывают. Каждая задача имеет область памяти. Заголовок задачи начинается с области TSS. Там перечислены все значения регистров этой задачи (ВСЕ регистры примем не только регистры но и карта портов, если задача открыла(заняло порт, к примеру LPT1 , то там это отражается)). Они устанавливаются при переключении задачи. Все регистры и даже теневые сохраняются. ну тут все сложней? какой порядок в TSS, как именно происходит переключения, что меняется.... В общем сидеть и разбираться надо .
...говорят : понятия "заголовок задачи" нет ни в одном мануале интела "говорят что в москве кур доят" (с) используется! но не так тупо как описывает производитель Intel там сложная система. Можно посмотреть в этой книге хорошо написано: П.И. Рудаков Программирование на языке ассемблера в защищенном режиме. _TSS используется!_ но не для переключения процессов, там он используется как система выхода из зависания, тоесть, если одно не дружелюбное приложение заняло комп и не отдает управление системе, вот тут эта штука и срабатывает. Происходит запуск механизма востановления, завасший процесс откатывается назад и производится попытка его корректно закрыть "можно сказать так, что в системе на самом деле два ядра, одно сама пользовательская OS, а другое борется за живучесть первого" (с)
ну ссылаться на Рудакова и плевать в интел дело, конечно, неблагодарное... системы откатов есть во многих не-real-time осях (последние прибивают без лишних разговоров такие "дружелюбные" процессы). Его можно реализовать и без TSS
TermoSINteZ эксперт ты мой юный, Broken Sword мне совершенно правильно сказал не нервничать. Ты сначала с виндой разберись, по форуму поищи, о TSS сам почитай, а потом меня учи, хорошо?
TermoSINteZ Запоздал немного, но: Olly не Olly, но было дело (в SF искал место первого прибивания прерываний и DR-регистров), тоже понадобились LastBranchToIP, LastBranchFromIP и DR эмулить, написал дров, если интересно могу поискать исходники.
Если кто-нить поподробнее опишет алго просмотра MSR регистров под Olly то возможно когда-нить такая фича появится, например в моём плагине пока что я совсем не врубаюсь что смотреть и в какой момент %)
volodya Дык не понятно какие нужно соблюсти условия чтоб прочитать нужные данные их MSR, типа после срабатывания любого хардварного бряка ломится за инфой в MSR, и что там обязана быть нужная инфа, т.е. LastBranchToIP, LastBranchFromIP ? LocTb > тоже понадобились LastBranchToIP, LastBranchFromIP и DR эмулить, написал дров, если интересно могу поискать исходники. Интересно! Поищи
Ну вобщем MSR в XP only читать таким способом получается, вот только не понятно как читать именно то что нужно, какие параметры передавать в функцию, да и не очень понятно насчет универсальности метода, как там AMD и Intel процы в этом смысле соотносятся..
А еще я думаю будет проблема выяснить: именно для нашего отлаживаемого приложения или для другого относиться полученное состояние msr / И как контролировать правильность результата, если "нелегальным" методом получать этот регистр ?
TermoSINteZ Тут требуется разбор структур. Я забыл, где хранятся MSR в нуле. Но там должен быть идентификатор процесса/потока. Надо знать свой и сравнивать
А у меня ощущение что регистры эти одинаковы для всех процессов, где ж набраться регистров для каждого процесса %) ЗЫ: у Интела нифига толкового нет, хоть бы примерчик кода использования вложили в свои мануалы по программированию.. Кое-что есть в сорцах Linux'а. Интересно, LinIce использует эти регистры?
почему, аглицкий!? но я тут обмозговал сытуацыю, не стоит игра свеч, если ОС не сохранит для каждого процесса эти MSRы..