Сейчас на форуме: tyns777, zombi-vadim, zds (+4 невидимых) |
eXeL@B —› Программирование —› Засада с WRMSR в DOS'е |
Посл.ответ | Сообщение |
|
Создано: 29 мая 2013 11:40 · Личное сообщение · #1 Доброго времени суток! Пишу в Borland Pascal'e (в чистом DOS'e) такую процедуру: Procedure SetVID(D:Byte); assembler; asm push ds db $66,$B9,$41,$00,$01,$C0 {mov ecx,0C0010041 в ECX номер MSR регистра} db $66,$33,$D2 {xor edx,edx в EDX:EAX записываемое значение} db $66,$0F,$BA,$E8,$10 {bts eax,16 устанавливаем 16 бит, такая особенность} mov ah,D {записываем значение VID} db $0F,$30 {wrmsr} pop ds pop ax End;{SetVID} При запуске происходит зависон на WRMSR, причем, не совсем зависон, комп реагирует на клаву (переполнение буфера клавиатуры) Не могу понять в чем косяк??? Буду признателен за помощь. |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 29 мая 2013 12:08 · Личное сообщение · #2 |
|
Создано: 29 мая 2013 12:41 · Личное сообщение · #3 |
|
Создано: 29 мая 2013 13:37 · Личное сообщение · #4 |
|
Создано: 29 мая 2013 13:47 · Поправил: Veliant · Личное сообщение · #5 |
|
Создано: 29 мая 2013 13:49 · Поправил: VodoleY · Личное сообщение · #6 рекомендуют проверить поддерживает ли проц твой эти инструкции The CPUID instruction should be used to determine whether MSRs are supported (EDX[5]=1) before using this instruction. http://www.insidepro.com/kk/375/375r.shtml статья криса.. там есть примеры ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 29 мая 2013 13:52 · Личное сообщение · #7 nfox76 пишет: но, судя по дебагеру, ничего не читает. Состояние ECX:EDX не изменяется. Во-первых EDX:EAX, в ECX номер. Во-вторых, возможно здесь есть над чем задуматься. К тому же, 0xC0010041 это MSR_K7_FID_VID_CTL, т.е. AMD'шные процессоры на старой архитектуре K7 -> возможно Ваш процессор более новый(или вообще Intel) и просто не поддерживает данную штуку (в силу ее ненужности). |
|
Создано: 29 мая 2013 14:24 · Личное сообщение · #8 |
|
Создано: 29 мая 2013 14:34 · Поправил: nfox76 · Личное сообщение · #9 |
|
Создано: 29 мая 2013 14:39 · Поправил: nfox76 · Личное сообщение · #10 ELF_7719116 пишет: Во-первых EDX:EAX, в ECX номер. Во-вторых, возможно здесь есть над чем задуматься. К тому же, 0xC0010041 это MSR_K7_FID_VID_CTL, т.е. AMD'шные процессоры на старой архитектуре K7 -> возможно Ваш процессор более новый(или вообще Intel) и просто не поддерживает данную штуку (в силу ее ненужности). Да, по регистрам я ошибся.... Но, в моей процедуре, на мой взгляд, всё верно в ECX номер MSR регистра, а в EDX:EAX записываемое значение. Проц - правильный. |
|
Создано: 29 мая 2013 14:47 · Поправил: nfox76 · Личное сообщение · #11 |
|
Создано: 29 мая 2013 14:59 · Поправил: Veliant · Личное сообщение · #12 |
|
Создано: 29 мая 2013 16:49 · Личное сообщение · #13 |
|
Создано: 29 мая 2013 17:12 · Личное сообщение · #14 Veliant пишет: Чего гадать на кофейной гуще? Возьмите любой отладчик под DOS и смотрите на чем именно тормозится/виснет. Еще не хватает перехватить прерывание GF, которое дергается если WRMSR не устраивает значение ECX Так и делал. Запускаю Turbo Debugger борландовский, начинаю трассировку. Вешается на WRMSR. По исключеню, да, у меня такая мысль была. Цитата "Попытка чтения/записи зарезервированного или отсутствующего в данной модели MSR приводит к исключению GP0" Но почему? Он не отсутствует, или что, в DOS'е стал зарезервированным? |
|
Создано: 29 мая 2013 17:19 · Личное сообщение · #15 reversecode пишет: прям таки чистый дос? ой не верю, прям вот так вот с дискеточки запускаете паскакаль? ну допустим..тогда EMM386 нужно выгружать Ну да. Чистый. На машине стоит Sistem Commander (менеджер операционных систем) и кроме винды там есть ещё много всего, и в том числе DOS. А что бы не грузились всякие дровишки достаточно держать Shift при старте, вот и будет чистый DOS. Паскаль запускаю с винта, с раздела Fat32. |
|
Создано: 29 мая 2013 17:27 · Личное сообщение · #16 |
|
Создано: 30 мая 2013 10:44 · Личное сообщение · #17 |
|
Создано: 30 мая 2013 15:19 · Поправил: reversecode · Личное сообщение · #18 |
|
Создано: 30 мая 2013 15:31 · Личное сообщение · #19 |
|
Создано: 30 мая 2013 15:42 · Личное сообщение · #20 что то я завтыкал rdmsr and wrmsr are privileged instructions. nfox76 пишет: RDMSR комп не вешает, процедура нормально завершается, но, судя по дебагеру, ничего не читает. Состояние ECX:EDX не изменяется. rdmsr похоже у вас тоже не работает тема исчерпана |
|
Создано: 30 мая 2013 15:54 · Личное сообщение · #21 |
|
Создано: 30 мая 2013 16:03 · Личное сообщение · #22 |
|
Создано: 30 мая 2013 16:15 · Личное сообщение · #23 |
eXeL@B —› Программирование —› Засада с WRMSR в DOS'е |
Эта тема закрыта. Ответы больше не принимаются. |