Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Что значит "Privileged instruction."  (Прочитано 49135 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 28-11-2006 12:55 » 

VC 7.0 из 2003 го интерпрайза 

Проект АТЛ модуля, в качестве итсрумента тестирования использую програмку на VB 6.0.
Полгода с разной переодичностью пользовал и никаких проблем тут вдруг не стого не сего отладчик студии не хочет стартовать проект ругается говорит:
 
'Project1.exe': Loaded 'C:\WINNT\system32\MSCTF.DLL', No symbols loaded.
First-chance exception at 0x004013da in Project1.exe: 0xC0000096: Privileged instruction.
Unhandled exception at 0x004013da in Project1.exe: 0xC0000096: Privileged instruction.


При этом без отладчика все запускается и работает(в от тестированой части разуметтся)
« Последнее редактирование: 14-12-2007 22:45 от Алексей1153++ » Записан

Да да нет нет все остальное от лукавого.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 28-11-2006 22:01 » 

Этот файл существует  C:\WINNT\system32\MSCTF.DLL ?
Какие были сделаны изменения в системе до этого?

« Последнее редактирование: 28-11-2006 22:03 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 29-11-2006 05:01 » 

Конечно есть.
Да ни каких особых изменений не делал, добавил на тестовую форму кнопку и техт бокс.... причем кода их убрал проблема не исчезла.....

Записан

Да да нет нет все остальное от лукавого.
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 29-11-2006 08:25 » 

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

Попробуй выключить оптимизацию полностью. Сделать ребилд. Больше пока ничего в голову не приходит.
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 29-11-2006 09:07 » 

Попробую .... меня смущает то что такая хрень произошла на одном проете.... а саму либу меня пользуют несколько приложений тоже на ВБ и там все в порядке....

Хотя тут дальше начался какойто расколбас почемуто при запуске на дебаг релизового проекта он вылетает с ошибкой на создании процесса что вобщемто приисходить недолжно ....

Может не в проекте дело а студия крекнулась?


 
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #5 : 29-11-2006 13:52 » 

Пришли стек. А именно при дизассемблирование какая последняя команда была вызвана.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 30-11-2006 06:28 » 

004013C0  jmp         dword ptr ds:[401030h]
004013C6  jmp         dword ptr ds:[401040h]
004013CC  jmp         dword ptr ds:[40112Ch]
004013D2  jmp         dword ptr ds:[401090h]
004013D8  db          ffh 
004013D9  db          25h 
004013DA  ins         byte ptr [edi],dx   //На этой команде бьет эксепшон
004013DB  adc         byte ptr [eax],al
004013DE  jmp         dword ptr ds:[401084h]
004013E4  jmp         dword ptr ds:[4010A4h]
004013EA  jmp         dword ptr ds:[4010B0h]
004013F0  jmp         dword ptr ds:[4010B4h]
004013F6  jmp         dword ptr ds:[40103Ch]

Call Stack
>   Project1.exe!004013da()    

Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #7 : 30-11-2006 08:06 » 

ins - Input from Port to String
чтение портов это непривилегированная операция. Значить ее нельзя исполнять в режиме пользователя (ring 3).
Вопрос в том как она попала в твой код. Тоесть ты сам ее туда записал или это из какой либы?
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 30-11-2006 09:18 » 

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

Другое дело, что на самом деле ins является привилегированной. Если в битовой карте ввода/вывода для данного порта стоит ноль и текущий уровень привилегий соответствует позволенному, то она может выполняться. В третьем кольце ее можно выполнить для COM порта, например, если он нормально открыт.

Вообще похоже на то, что порт открыт в режиме только записи, или адрес порта неверный.
« Последнее редактирование: 30-11-2006 09:20 от Scorp__) » Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 30-11-2006 09:24 » 

Что интересно, в проекте вообще нет работы с портами, работы с ком портами нет и в подключаемой АТЛ либе,    там только TCP .....
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #10 : 30-11-2006 09:25 » 

Ой сори я очепятался Улыбаюсь . Но думаю слова "Значить ее нельзя исполнять в режиме пользователя (ring 3)." это показывают.
Записан
Greysfi
Гость
« Ответ #11 : 30-11-2006 09:26 » 

Ты по стеку можешь определить как он на эту инструкцию вылез?
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 30-11-2006 10:16 » 

Call Stack
>   Project1.exe!004013da() 

Это все что есть в стеке, эксепшон вылетает вмоент загрузки исполняемого файла...до загрузки моей АТЛ вообще еще не дошло.
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #13 : 30-11-2006 10:21 » 

Судя по стеку эта инструкция находится в файле Project1.exe. Что это за файл? И он что без отладочной информации собран?
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 30-11-2006 10:36 » 

Совершенно верно этот файk, тестовая оболочка моего АТЛ мдтуля, создан при помощи VB6.0, почему без дебаговой инфы.... да вобщемто она мне там и не нужна, там есть референс на мою библиотеку, есть объявление
Piblic psd_fn as new DLS_clients.psd_fn_lib 
 да десяток конопок под котроыми дергаются те или иные методы библиотеки.
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #15 : 30-11-2006 10:44 » 

Просто по ходу дело в самой тестовой проге.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 30-11-2006 10:51 » 

PSD, из листинга видно, что косвенный jump занимает имеет длину 6 байт. Мусор, на котором ты споткнулся, занимает теже 6 байт. Логично предположить, что там должна быть такая же команда jmp [...], но кто-то ее разрушил или переход был сделан не на начало команды.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 30-11-2006 11:24 » 

RXL, вот что значит системный подход Улыбаюсь Там же действительно видно таблицу переходов, но мы ее-то и не приметили Улыбаюсь

Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 30-11-2006 11:31 » 

Делать то что?
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 30-11-2006 12:21 » 

Искать точку, с которой был сделан коивой вызов или запись в память по соотв. адресу.
Рекомендую справиться по кодам команд, что есть FF и 25.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 30-11-2006 15:28 » 

FF похоже на начало джампа, вот только адрес я не смог расшифровать, то что у меня получается на адрес совсем не похоже. Лучше бы это место в hex режиме увидеть
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 30-11-2006 19:46 » 

JMP – Unconditional Jump (to same segment)
register indirect      1111 1111 : 11 100 reg
memory indirect         1111 1111 : mod 100 r/m

JMP – Unconditional Jump (to other segment)
indirect intersegment   1111 1111 : mod 101 r/m

FF вписывается хорошо, а 25 (00 011 001) - нет.
Думаю трабла в этом. Ищи, кто записал в эту точку данные!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Greysfi
Гость
« Ответ #22 : 01-12-2006 11:39 » 

Чето у меня сомнения по поводу того может ли обычная прога в свой сегмент кода хоть чего нибудь записать это первое.
Второе FF 25 90 10 40 00 это дамп команды jmp         dword ptr ds:[401090h]. Так что 25h тоже не плохо вписывается. Следовательно мы имеем дело с тем что кто то выше по стеку неправильно сделал вызов или еще хуже jump, возможно хотя и с очень маленькой вероятностью что компилятор не правильно код строит. Так же могут быть приколы со стеком в общем тут разбираться и разбирать.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 01-12-2006 17:48 » 

Улыбаюсь блин, я ступил: 0х25 с чего-то интерпретировал как 25. Так конечно - 00 100 101 - вписывается.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #24 : 02-12-2006 23:50 » 

Это всё интересно, только часто ли в мировой практике подобное наблюдалось в коде, генерируемом VB 6.0, которому скоро уж 10 лет от роду будет? И поскольку ответ отрицательный, то дело наверно не в этом... Что же касается идей записи данных по адресам кода... Поскольку VB - это не C/C++, и в нём нужно очень постараться так криво работать с памятью, опять же, возникает мысль, что проблема в чём-то другом...
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Greysfi
Гость
« Ответ #25 : 04-12-2006 08:04 » 

Во первых насчет записи опять же говорю что скорее всего этот код находиться в странице кода, а ее модифицировать не так уж и просто Улыбаюсь. То есть что кто то портить код это скорее всего не так. А вот чтобы отбросить ошибку компилятора нужно попробовать построить код с разными там оптимизациями и если они присутствуют то попробовать их отключить. И посмотреть повторяется ли эта бага. 
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #26 : 04-12-2006 09:28 » 

Скомпилировал  Project1.exe с отключенными оптимизациями, вроди как  все заработало.... инетерсно почему пол года до этого с влюченой оптимизацией все работало а сейчас сломалось.
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #27 : 04-12-2006 09:40 » 

Иногда оптимизация приводит к странным результатам Улыбаюсь
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #28 : 04-12-2006 17:04 » 

PSD, отладочная сборка обычно без оптимизаций делается. Не зря, наверное...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Greysfi
Гость
« Ответ #29 : 05-12-2006 08:01 » 

Отладка оптимизированного кода может стать очень интересной вещью Улыбаюсь
Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines