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

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

ru
Offline Offline

« : 01-08-2003 08:47 » 

Кто скажет, если вызвать прерывание в 0 кольце что произойдет ?
Записан

while (8==8)
RXL
Технический
Администратор

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

WWW
« Ответ #1 : 01-08-2003 09:01 » 

Прерывание  Отлично
В доке по процессору описаны варианты прерываний с/без смены уровня привилегий.
Короче, нужно уточнение - чего ты хочешь узнать?
Записан

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

ru
Offline Offline

« Ответ #2 : 01-08-2003 09:16 » 

Цитата: RXL
Прерывание  Отлично
В доке по процессору описаны варианты прерываний с/без смены уровня привилегий.
Короче, нужно уточнение - чего ты хочешь узнать?


Там вопрос есть про PCI, я щас не помню номера, называется прерывание - чтение конфигурационного просранства PCI.
Записан

while (8==8)
sss
Специалист

ru
Offline Offline

« Ответ #3 : 01-08-2003 09:17 » 

Лично меня интересует технолоgy установки обработчика...
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #4 : 04-08-2003 05:43 » 

А ты что в винде хочешь прерывание вызвать?
Можно конечно свой обработчик написать и поместить на него указатель в IDT. И тогда при вызове int X будет вызван он. Но это немного против правил, так как самостоятельное изменение IDT в винде не предусмотренно, но и запретить это сделать тебе нельзя.
А как должен выглядеть обработчик прерывания, что надо прописать в IDT, и что происходит со стеком при смене и без смены привилегий -читай в документации Intel.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #5 : 05-08-2003 02:55 » 

Вопрос в том, будут ли работать прерывания (BIOS), или нет ?
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #6 : 05-08-2003 05:07 » 

Цитата

Вопрос в том, будут ли работать прерывания (BIOS), или нет ?


Прерывания BIOS в основном для реального режима(16 разрядный режим), а винда переводит процессор в защищенный режим(32 разрядный), попытка выполнить подпрограмму обработки прерывания для реального режима в защищенном однозначно обрушит систему. Тем не менее в BIOS есть точки входа для вызова 32 разрядным подпрограмм, но по каким адресам они расположены я не знаю- надо читать документацию по ACPI и на BIOS.
Вывод такой- вызывать прерывания для работы с PCI, описанные в книжках, нельзя так как это 16 разрядные программы и вызов их из защищенного режима невозможен по двум причинам-
1) Указатели в таблице IDT не указывают на них и попытка вызова int N приведет не к вызову этой подпрограммы, а к вызову одного из обработчиков, зарегистрированных операционной системой, так как таблицу IDT в защищенном режиме создает ОС, в то время как в реальном режиме таблица указателей на обработчики прерываний находится в начале физической памяти и указатели на обработчики BIOS прописывает сама BIOS в момент загрузки.
2) Выполнение 16 разрядных обработчиков прерываний для реального режима в защищенном режиме невозможно.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #7 : 05-08-2003 06:48 » 

В ядре есть ф-ция Ke386CallBios , можешь ее дизассемблировать и посмотреть что она делает, может тебе поможет, там что-то с режимом виртуального 86 связано. Упоминание об этой ф-ции есть только тут
http://www.ntdev.org/archive/ntdev9710/msg0093.html
Записан
sss
Специалист

ru
Offline Offline

« Ответ #8 : 06-08-2003 06:36 » 

Конечно я все понимаю (это из про PCI)! Но я еще не со всеми BSOD ознакомился  8) .
Вызов INT 1A (XX) -> смерть без BSOD, аналог reset   Здесь была моя ладья... .

стал копать дескрипторы в IDT. [MS 2000 Server ]
(dec)
2,8,18 -  селекторы TSS (шлюзы задач)
32 - 41 - не определены
остальные все в селекторе GDT[8]. Ниже на примере 1B.
Код:

********************** Свободный выбор шлюза IDT по номеру вектора**********************


************************ШЛЮЗ ПРЕРЫВАНИЯ (INTERRUPT GATE)386+ [E]************************

  SELECTOR = 00000008h                        //селектор целевого сегмента             
    OFFSET = 8046868Fh                        //смещение точки входа в сегменте         
       DPL = 00000000                         //уровень привилегий дескриптора         
 (P)RESENT = (1) отображен                    //присутствие в RAM                       

Вариант1. (значение selector = 400h GDT[8])
***************** Свободный выбор дескриптора по индексу селектора GDT *****************
*************************************** СЕЛЕКТОР ***************************************
    BINARY = 0000000001000000                 //двоично                                 
       HEX = 00000040h                        //шестнадцатирично                       
       RPL = 00000000                         //запрашиваемый уровень привилегий       
     TABLE = глобальная                       //используемая таблица дескрипторов       
     INDEX = 00000008h                        //индекс в таблице дескрипторов           


*******************************ДЕСКРИПТОР СЕГМЕНТА ДАННЫХ*******************************

      BASE = 00000400h                        //база сегмента                           
     LIMIT = 0000FFFFh                        //предел сегмента                         
       DPL = 00000003                         //уровень привилегий дескриптора         
   (W)RITE = (1) разрешено                    //разрешение записи в сегмент             
  (E)XPAND = (0) вверх(data)                  //направление расширяемости               
 (P)RESENT = (1) отображен                    //присутствие в RAM                       
 (G)RANULA = (0) в байтах                     //гранулярность                           
   (B)OUND = (0) 64 кБ                        //максимальный размер сегмента

Вариант2. (значение selector = 8h GDT[1])
***************** Свободный выбор дескриптора по индексу селектора GDT *****************
*************************************** СЕЛЕКТОР ***************************************
    BINARY = 0000000000001000                 //двоично                                 
       HEX = 00000008h                        //шестнадцатирично                       
       RPL = 00000000                         //запрашиваемый уровень привилегий       
     TABLE = глобальная                       //используемая таблица дескрипторов       
     INDEX = 00000001h                        //индекс в таблице дескрипторов           


******************************ДЕСКРИПТОР КОДОВОГО СЕГМЕНТА******************************

      BASE = 00000000h                        //база сегмента                           
     LIMIT = FFFFFFFFh                        //предел сегмента                         
       DPL = 00000000                         //уровень привилегий дескриптора         
 (E)XEREAD = (1) разрешено                    //разрешение чтения для выполнения       
 (C)ONFORM = (0)CPL = DPL                     //подчиненность                           
 (P)RESENT = (1) отображен                    //присутствие в RAM                       
 (G)RANULA = (1) в 4 кБ стр                   //гранулярность                           
 (D)EFSIZE = (1) 32 бит                       //размер адресов и операндов по умолчанию

Какой из вариантов использовать дальше? Вообще, по логике 2.
Тогда смотрим CS selector в ядре -> 08h. Передаем управление на
8046868Fh и получаем наш reset.

Так, дамп по  8046868Fh (100 байт).
-------------------------------------------------------------
 Адрес:  -> 00 01 02 03 04 05 06 07 08 09 0A 0B
-------------------------------------------------------------
8046868F -> 6A 00 66 C7 44 24 02 00 00 55 53 56
8046869B -> 57 0F A0 BB 30 00 00 00 66 8E E3 64
804686A7 -> 8B 1D 00 00 00 00 53 83 EC 04 50 51
804686B3 -> 52 1E 06 0F A8 66 B8 23 00 83 EC 30
804686BF -> 66 8E D8 66 8E C0 8B EC F7 44 24 70
804686CB -> 00 00 02 00 75 96 FC F6 05 50 F0 DF
804686D7 -> FF FF 0F 85 04 FF FF FF FB B8 0F 00
804686E3 -> 00 00 E9 A6 05 00 00 90 F7 45 70 00
804686EF -> 00 02 00 75 0D F7 45 6C 01 00 00 00
804686FB -> 0F 84 E6 00 00 00 0F 21 C3 0F 21 C9
80468707 -> 0F 21 D7 89 5D 18 89 4D 1C 89 7D 20
80468713 -> 0F 21 DB 0F 21 F1 0F 21 FF 89 5D 24
8046871F -> 89 4D 28 BB 00 00 00 00 89 7D 2C 0F
8046872B -> 23 FB 64 8B 3D 20 00 00 00 8B 9F F8
80468737 -> 02 00 00 8B 8F FC 02 00 00 0F 23 C3
80468743 -> 0F 23 C9 8B 9F 00 03 00 00 8B 8F 04
8046874F -> 03 00 00 0F 23 D3 0F 23 D9 8B 9F 08
8046875B -> 03 00 00 8B 8F 0C 03 00 00 0F 23 F3
80468767 -> 0F 23 F9 EB 7B 8D 49 00 8B 85 84 00
80468773 -> 00 00 8B 9D 88 00 00 00 8B 4D 7C 8B
8046877F -> 95 80 00 00 00 66 89 45 50 66 89 5D
8046878B -> 30 66 89 4D

Помогите сделать дизасм.
Где скачать файлы символьных id's (symbolsx.exe + symbols.cab) ?
Помогите найти, пожалуйста !
« Последнее редактирование: 19-11-2007 16:41 от Алексей1153++ » Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #9 : 06-08-2003 07:11 » 

Найденные тобой шлюзы задач предназначены для обеспечения переключения задач в момент показа BSOD и скидывания дампа ядра.

Цитата

Помогите сделать дизасм.


А ты отладчик ядра хоть какой нибудь себе поставь(SoftIce, WinDbg, i386kd.exe). Для дизасма можно использовать livekd, он запускает отладчик на одной машине передавая дамп ядра.

Цитата

Где скачать файлы символьных id's (symbolsx.exe + symbols.cab)


Что за имена symbols? Это кто?
Символьные файлы на сайте Microsoft.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #10 : 06-08-2003 07:17 » 

Цитата

8046868F -> 6A 00 66 C7 44 24 02 00 00 55 53 56
8046869B -> 57 0F A0 BB 30 00 00 00 66 8E E3 64
804686A7 -> 8B 1D 00 00 00 00 53 83 EC 04 50 51
804686B3 -> 52 1E 06 0F A8 66 B8 23 00 83 EC 30
804686BF -> 66 8E D8 66 8E C0 8B EC F7 44 24 70
804686CB -> 00 00 02 00 75 96 FC F6 05 50 F0 DF
804686D7 -> FF FF 0F 85 04 FF FF FF FB B8 0F 00
804686E3 -> 00 00 E9 A6 05 00 00 90 F7 45 70 00
804686EF -> 00 02 00 75 0D F7 45 6C 01 00 00 00
804686FB -> 0F 84 E6 00 00 00 0F 21 C3 0F 21 C9
80468707 -> 0F 21 D7 89 5D 18 89 4D 1C 89 7D 20
80468713 -> 0F 21 DB 0F 21 F1 0F 21 FF 89 5D 24
8046871F -> 89 4D 28 BB 00 00 00 00 89 7D 2C 0F
8046872B -> 23 FB 64 8B 3D 20 00 00 00 8B 9F F8
80468737 -> 02 00 00 8B 8F FC 02 00 00 0F 23 C3
80468743 -> 0F 23 C9 8B 9F 00 03 00 00 8B 8F 04
8046874F -> 03 00 00 0F 23 D3 0F 23 D9 8B 9F 08
8046875B -> 03 00 00 8B 8F 0C 03 00 00 0F 23 F3
80468767 -> 0F 23 F9 EB 7B 8D 49 00 8B 85 84 00
80468773 -> 00 00 8B 9D 88 00 00 00 8B 4D 7C 8B
8046877F -> 95 80 00 00 00 66 89 45 50 66 89 5D
8046878B -> 30 66 89 4D


Это начало стандартного обработчика. Сравни со своим
804dcf4c 6a00             push    0x0
804dcf4e 66c74424020000   mov     word ptr [esp+0x2],0x0
804dcf55 55               push    ebp
804dcf56 53               push    ebx
804dcf57 56               push    esi
804dcf58 57               push    edi
804dcf59 0fa0             push    fs
804dcf5b bb30000000       mov     ebx,0x30
Записан
sss
Специалист

ru
Offline Offline

« Ответ #11 : 06-08-2003 08:50 » 

1.Спасибо SlavaI за дизасм. Все они у меня есть. Пользоваться просто не приходилось. Они могут дизассемблировать дамп? Или сохранить в com файл ?

2.Про символы: из MSDN, диск -> Windows 2000 Customer Support - Diagnostic Tools. Я по сайтам лазил ни фига не нашел Жаль . Карма какая то. Шрайбикус по ним книгу писал. HELP MY!

3. Выходит на обработке INT XX находится sysmurder ?
Или я просто не прав (см. ниже)
Код:

  mov ax, 0B101h
  pushf
  call 8046868Fh // надо jmp, pushd ?
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #12 : 06-08-2003 09:17 » 

Цитата

Они могут дизассемблировать дамп?


WinDbg и i386kd.exe могут. Livekd делает дамп на работающей системе и подсовывает его i386kd.exe

Цитата

Про символы


Во первых если в WinDbg прописать сервер символов(читай symbol server ) то он сам с сайта майкрософта символы будет качать- читай тут http://www.microsoft.com/whdc/ddk/debugging/symbols.mspx.

Полный набор можно взять вот тут
http://www.microsoft.com/whdc/ddk/debugging/symbolpkg.mspx#Windows%20symbol%20packages
только он больше 100 Мб.

Цитата

Выходит на обработке INT XX находится sysmurder


А что такое sysmurder, убица системы? Вобще то некорые прерывания можно вызывать- int 2e  - вызов системных сервисов например. Чтобы самому вызвать обработчик прерывания/исключения(не с помощью int) надо стек сделать такой же как при нормальном вызове(то есть если со сменой привилегий- то там указатель на старый стек сидит), смотри в мануале к процам что в стеке быть должно, а то при возврате из процедуры система ляжет, так как будет изуродован стек.
При вызове с использованием call учти что он адрес возврата в стек заносит- посмотри как там это согласуется со стеком при вызове прерывания, где там адрес возврата. Мне уже влом мануалы читать по этому делу.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #13 : 06-08-2003 09:32 » 

SlavaI спасибо.
Записан

while (8==8)
sss
Специалист

ru
Offline Offline

« Ответ #14 : 07-08-2003 08:56 » 

Пробовал дизассемблеры. Не получилось в WinDbg. Ему подовай exe или crash dump. Вспомнил про sourcer. Ложу кусок памяти в файл, и в sourcer'e  задаю режим "кусок кода" из файла. Староват правда. В режиме директивы .486p получается вначале нечто похожее что и у SlavaI. Дальше - херня. Кто скажет, какие "офицальные" минимальные системные требования у WIN2000 ? И кто еще может подобно  sourcer дизасм кусков делать, только поновее?
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #15 : 07-08-2003 09:39 » 

Цитата

какие "офицальные" минимальные системные требования у WIN2000


У меня есть машинка Celeron 300 МГц, 96 Мб памяти. Нормально работает Win200 Server. Для экспериментов достаточно.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #16 : 08-08-2003 08:43 » 

SlavaI, спасибо огромное за подсказку про http://www.microsoft.com/whdc/ddk/debugging/symbolpkg.mspx#Windows%20symbol%20packages . Настроил все и теперь пользуюсь паталогоанатомом i386kd.exe. Хотел из дома дамп обработчика показать, да что-то заглючил CDRW, не читает.
в общем там тупик. Проверки режима работы и "обрушивающий прыжок".
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #17 : 08-08-2003 09:32 » 

Для исследования дампа WinDBG поудобнее. Все таки графический интерфейс есть, а команды он воспринимает те же что и i386kd.exe.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #18 : 12-08-2003 02:53 » 

SlavaI, учту
Записан

while (8==8)
sss
Специалист

ru
Offline Offline

« Ответ #19 : 14-08-2003 07:39 » 

Настроил два компа на debug по null modem (i386kd). Подскажите, кроме передачи дампа, можно debuggiть ядро на лету ? Может какие другие отладчики имеются с такой возможностью ?
P.S: был атакован msblast. MS Server 2000 не рушился в ресет, но вирус производил отказ службы svchost со всеми вытекающими последствиями. Во внутреннюю сеть не пролез.
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #20 : 14-08-2003 07:49 » 

Цитата

Подскажите, кроме передачи дампа, можно debuggiть ядро на лету ?


Он для этого и предназначен. Никакой дамп он не передает. Посмотри список команд- там есть break point. Отладка работающего ядра- это и есть работа для i386kd или WinDbg. Читай help к дебагеру.
Есть еще SoftIce, работает на одном компе, но ограничен в возможностях по сравнению с  i386kd или WinDbg.

Цитата

вирус производил отказ службы svchost


Вобще-то аварийный останов службы RPC. Svchost- это прога которая хостит разные службы, написанные в виде dll. В ресет уходит только XP из-за остановки службы безопасности, на 2k она не останавливается, хотя если самому ее прибить, то и 2k перегрузится.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #21 : 14-08-2003 08:17 » 

SlavaI, помоги !
Условия такие.
Один комп -> nt4 c проинсталированным полностью DDK 2000 и символами.
Второй -> 2000 prof c проинсталированным полностью DDK 2000 и символами.
На 2000 Prof -> boot.ini /debug /debugport=com2 и т.д.
На nt4 -> _NT_DEBUG_PORT и т.д.
Запускаю на nt4 -> remote /s "i386kd -b" debug
Запускаю на 2000 prof -> remote /c sub01 debug  // sub01 - имя соответственно nt4 компа

Начинается сеанс - простое echo в обоих направлениях? Что не так ?
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #22 : 14-08-2003 08:41 » 

У тебя какая-то смесь бульдога с носорогом. Зачем тебе remote(там для ядра 3 компа нужно!)?
Поставил символьные файлы на NT4, запустил Win2k с /debug /debugport=com2 параметрами(ставить символьные файлы на Win2k не надо, все равно не использует). Запустил на NT4 дебаггер
kd [-y SymbolPath] -k com:port=ComPort,baud=BaudRate
или
windbg [-y SymbolPath] -k com:port=ComPort,baud=BaudRate
И наслаждаешься.
Вобще-то это все в хелпе к дебагерам написано.
Дебагер работает по такому принципу- он передает команды на отлаживаемый комп по кабелю, там их принимает отладчик, встроенный в ядро, и передает результат отработки команды обратно. Символьные файлы нужны на том компе, где i386kd или WinDBG запущены, так как с помощью этих файлов они анализируют пришедшие к ним данные.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #23 : 14-08-2003 08:47 » 

Цитата: SlavaI
... там для ядра 3 компа нужно!


ЗАЧЕМ ?
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #24 : 14-08-2003 08:58 » 

Цитата

ЗАЧЕМ ?


Remote kernel-mode debugging involves three computers: the client, the server, and the target computer. The target computer is the machine to be debugged. The server is a machine with a kernel debugger, located at the same physical location as the target computer. The client is the machine that will remotely control the debugging session. See Configuring Hardware for Kernel-Mode Debugging for details on the connection between the server and the target computer.

Help надо читать.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #25 : 14-08-2003 09:02 » 

ёмоё, у меня документ по старту дебугера для win 3.51 ! Вот я тупость  :oops:.
SlavaI, у меня все это хозяйство дома, а смесь такая,  потому что денег на второй нормальный комп нет  Вот такой я вот
Попробую как ты написал, завтра раскажу....
Записан

while (8==8)
sss
Специалист

ru
Offline Offline

« Ответ #26 : 14-08-2003 09:10 » 

Цитата: SlavaI


Remote kernel-mode debugging involves three computers: the client, the server, and the target computer. The target computer is the machine to be debugged. The server is a machine with a kernel debugger, located at the same physical location as the target computer. The client is the machine that will remotely control the debugging session. See Configuring Hardware for Kernel-Mode Debugging for details on the connection between the server and the target computer.


Это не факт. Это похоже про отладку, которой будет управлять Microsoft engineer.
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #27 : 14-08-2003 09:37 » 

Цитата

Это не факт. Это похоже про отладку, которой будет управлять Microsoft engineer.


Я не пойму, зачем эту бадягу разводить. Какая разница кто будет управлять. Эта утилита для сети предназначена, что-то там передает на третий комп, а ты через нуль-модемный кабель компы соединил, в этом случае надо запустить отладчик и все- не нужен никакой remote!
Записан
Anonymous
Гость
« Ответ #28 : 18-08-2003 04:20 » 

Дело было в долбаном null modem кабеле.
У меня было
     2   3
     3   2
     4   7
     5   8
     7   5
     6   6
     8   1
     20   4
     20   4
А надо:
     2    2
     3         3
     6         4
     7         5
     20       6
     5         7
     4         8

Простите за бадягу  Жаль ...
Записан
sss
Специалист

ru
Offline Offline

« Ответ #29 : 18-08-2003 04:27 » 

Это я был выше...
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #30 : 18-08-2003 05:21 » 

Цитата

Это я был выше...


Вот и у меня на прошлой неделе что-то с автоматическим входом не так было.
Записан
.
Молодой специалист

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

« Ответ #31 : 18-08-2003 15:33 » 

Цитата: SlavaI
А ты что в винде хочешь прерывание вызвать?
Можно конечно свой обработчик написать и поместить на него указатель в IDT. И тогда при вызове int X будет вызван он. Но это немного против правил, так как самостоятельное изменение IDT в винде не предусмотренно, но и запретить это сделать тебе нельзя.
А как должен выглядеть обработчик прерывания, что надо прописать в IDT, и что происходит со стеком при смене и без смены привилегий -читай в документации Intel.

:!: При очередном билде первой версии в ноябре прошого года (надеюсь, что через несколько месяцев будет вторая) моей операционной системы (полноценная ось, но первая версия безвозвратно поибла Жаль ), я обнаружил, что из процесса с уровнем привелегий 3 в Win98 можно реально вылезти в 0 кольцо привелегий :!: без особых на то усилий.
Записан
.
Молодой специалист

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

« Ответ #32 : 18-08-2003 15:36 » 

да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU  в Win98, обращайтесь лично  Ага
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #33 : 18-08-2003 18:27 » 

Давай... на каких условиях?
Записан

А птичку нашу прошу не обижать!!!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #34 : 19-08-2003 05:16 » 

Цитата

да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU в Win98, обращайтесь лично


Я в 98/95 не работаю, но точно знаю, что это уже сделано. Только на кой это нужно, кому нужна 95/98 сейчас. Там помимо этого куча других дыр, хотя бы то что все системные dll общие для всех процессов и если один изменит ее то это скажется на всех. Собственно при разработке этих систем вопрос безопасности не ставился.
Записан
sss
Специалист

ru
Offline Offline

« Ответ #35 : 19-08-2003 07:20 » 

Ну посмотреть все равно можно. Только вот косяк. Меня завтра в армию drag&drop  Я шокирован!  Ха-ха-ха, на 25 суток партизанить  8) .  . Так что всем удачи !
Записан

while (8==8)
Anonymous
Гость
« Ответ #36 : 19-08-2003 07:38 » 

Цитата

Меня завтра в армию drag&drop  , на 25 суток партизанить  


Заплатил бы 400 долларов военным и отстали бы от тебя.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #37 : 19-08-2003 07:57 » 

sss, ну тогда удачи.
Записан

А птичку нашу прошу не обижать!!!
sss
Специалист

ru
Offline Offline

« Ответ #38 : 19-08-2003 08:09 » 

Спасибо Гром. А про 400$, это мой заработок за 3 месяца. А предлогают стать офицером ФСБ. Все пригодиться.  Вот такой я вот
Записан

while (8==8)
sss
Специалист

ru
Offline Offline

« Ответ #39 : 19-08-2003 08:10 » 

PS: гость - SlavaI ?
Записан

while (8==8)
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #40 : 19-08-2003 09:01 » 

Цитата

PS: гость - SlavaI ?


Ага, я. А вот я стал лейтенантом запаса РВСН(Ракетные Войска Стратегического Назначения). 8)  :!:
РВСН- это хорошо!
Записан
.
Молодой специалист

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

« Ответ #41 : 19-08-2003 09:05 » 

Цитата: SlavaI
Цитата

да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU в Win98, обращайтесь лично


Я в 98/95 не работаю, но точно знаю, что это уже сделано. Только на кой это нужно, кому нужна 95/98 сейчас. Там помимо этого куча других дыр, хотя бы то что все системные dll общие для всех процессов и если один изменит ее то это скажется на всех. Собственно при разработке этих систем вопрос безопасности не ставился.

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...
Записан
sss
Специалист

ru
Offline Offline

« Ответ #42 : 19-08-2003 09:06 » 

Цитата: SlavaI

РВСН- это хорошо!


 Отлично
Записан

while (8==8)
.
Молодой специалист

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

« Ответ #43 : 19-08-2003 09:11 » 

Цитата: SlavaI
Только на кой это нужно, кому нужна 95/98 сейчас.
Ага
Мне! Там  есть очень удобная фишка - ДОС, он же реальный режим CPU, возможность загрузить очередной билд ОСи!!! Жжешь
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #44 : 19-08-2003 09:58 » 

Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...


Ну так расскажи как. Я уже один знаю- надо быть админом.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #45 : 19-08-2003 10:00 » 

Цитата

Мне! Там есть очень удобная фишка - ДОС, он же реальный режим CPU, возможность загрузить очередной билд ОСи!!!


Ну и что. Реальный режим- это жуткий пережиток, по нормальному его надо было убрать. А у тебя что- ось только в реальном режиме работает?
Записан
.
Молодой специалист

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

« Ответ #46 : 19-08-2003 10:40 » 

Цитата: SlavaI
Ну и что. Реальный режим- это жуткий пережиток, по нормальному его надо было убрать. А у тебя что- ось только в реальном режиме работает?
Жжешь
Не не прав! CPU загружается в защищенном режиме (начиная с i386), потом по первому прерыванию (таймера) переходит в реальный (начиная с i386 это уже фантом и пережиток прошлого). Далее ЛЮБАЯ ось защещенного режима установливаем свою адресацию и т.д.
=> Для того, чтобы иметь право загрузить свою ось тебе ПРИДЕТСЯ поиметь привелегии на это: Либо нулевое колечко (с творогом Ага) либо реальный режим, где все привелегии отсутствуют (своеобразная анархия)
Записан
.
Молодой специалист

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

« Ответ #47 : 19-08-2003 10:42 » 

Цитата: SlavaI
Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...


Ну так расскажи как. Я уже один знаю- надо быть админом.

Нет этот способ онован неа том, что все функции kernel.dll в виндах имеют одни и те же линейные адреса во всех процессах
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #48 : 19-08-2003 11:39 » 

Цитата

Нет этот способ онован неа том, что все функции kernel.dll в виндах имеют одни и те же линейные адреса во всех процессах


Ну и что? Что дальше-то. Я подобных фактов до кучи знаю. Ты мне приведи пример, когда имея права простого юзера долбанули процесс сервиса, например RPC (пример Lovesan, DebPloit не приводить). Будет еще один глюк, теперь на уровне управления памяти, а ты обессмертишь свое имя.
 У страниц, по которым отображены системные dll, атрибут copy on write. Фишка с изменением системных dll, как в Win95/98 не пройдет.
 К тому же kernel32.dll
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #49 : 19-08-2003 11:45 » 

Цитата

Не не прав! CPU загружается в защищенном режиме (начиная с i386), потом по первому прерыванию (таймера) переходит в реальный (начиная с i386 это уже фантом и пережиток прошлого). Далее ЛЮБАЯ ось защещенного режима установливаем свою адресацию и т.д.
=> Для того, чтобы иметь право загрузить свою ось тебе ПРИДЕТСЯ поиметь привелегии на это: Либо нулевое колечко (с творогом ) либо реальный режим, где все привелегии отсутствуют (своеобразная анархия)


Во, блин, научил. Как же IA 64 без твоего чудного реального режима работает. Ты просто зациклился на IA 32.
Наверно хватит применять мерки IA 32 ко всем процессорам на свете.
Записан
.
Молодой специалист

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

« Ответ #50 : 19-08-2003 12:45 » 

Цитата: SlavaI
Во, блин, научил. Как же IA 64 без твоего чудного реального режима работает. Ты просто зациклился на IA 32.
Наверно хватит применять мерки IA 32 ко всем процессорам на свете.
Создавать процессор с 64-битной шиной не выгодно, если нет обратной совместитмости - его либо просто покупать не будут, либо он будет слишком дешевым - ты же не в голой винде сидишь 8), а большая часть софта - не Open-Source, даже, если и freeware..
К тому же Amd64 уже это поддерживает, а конкуренцию держать надо!
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #51 : 19-08-2003 12:54 » 

Цитата

Создавать процессор с 64-битной шиной не выгодно, если нет обратной совместитмости - его либо просто покупать не будут, либо он будет слишком дешевым - ты же не в голой винде сидишь , а большая часть софта - не Open-Source, даже, если и freeware..
К тому же Amd64 уже это поддерживает, а конкуренцию держать надо!


Ты это Intel скажи. Московское представительство- Чапаевский переуло д14. пятый этаж, налево из лифта.

С софтом там уже все в порядке- Oracl есть, IA 32 приложения работают(сам юзаю 32 разрядную VS6 с 64 разрядным компилятором). А основное применение этих процессоров- базы данных и высокопроизводительные и высокоточные вычисления с плавающей точкой(формат IEEE для чисел с плавающей точкой знаешь, если да то поймешь, почему широкие регистры лучше). С вычислениями тоже все нормально- они уже давно для 64 разрядных RISC систем делаются, так что перенос на Itanium не проблема. А у Linux вобще все хорошо- RH Advanced Server 2.1 со всем софтом уже давно есть.

А причем тут шина? Определять разрядность процессора по шине не совсем верно. У Itanium нет ни одной внешней 64 разрядной шины- шина адреса меньше, а данных больше. Разрядность процессора обычно определяют по разрядности основных регистров, а уж никак не по шине.
Записан
.
Молодой специалист

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

« Ответ #52 : 19-08-2003 13:00 » 

Мы отклонились от темы... Отлично
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #53 : 19-08-2003 13:03 » 

Цитата

Мы отклонились от темы...


Да, ты обещал баг в управлении памятью в NT-XP.
Записан
.
Молодой специалист

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

« Ответ #54 : 19-08-2003 13:10 » 

Цитата: SlavaI

Да, ты обещал баг в управлении памятью в NT-XP.

Позже - я сейчас на работе, все-таки... Здесь была моя ладья...
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #55 : 19-08-2003 13:11 » 

Цитата

Мы отклонились от темы...

Если при этом вторая тема интересна - то можно...

Да и как насчет бага - внимательно слежу!!!
Записан

А птичку нашу прошу не обижать!!!
.
Молодой специалист

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

« Ответ #56 : 19-08-2003 16:29 » 

Цитата: TJSoft
да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU  в Win98, обращайтесь лично  Ага


Вот код программы ( по личной просьбе Грома)
Код:
;compilling ~{
; ml /c /Cp /coff /Fo$)outdir:
.586p
.model flat
.code
begin{
  ; getting IDTR{
  push eax
  push eax
  sidt [esp + 02h(
  pop eax ; не понадобится
  pop ecx
 
  mov eax, offset int3_Handler ; Для теста это более безопасно. можно взять 0Dh )мой любимый:. я проверял и на нем... ;-E~
 mov edx, eax
 shr edx, 10h
 
 xchg [ecx+18h+00h(, ax
 xchg [ecx+18h+06h(, dx ;забиваем адреса..
 int 3
 ret

int3_Handler proc
 mov [ecx+18h+00h(, ax
 mov [ecx+18h+06h(, dx ; восстанавливаем
 ;... do something...
 iretd
int3_Handler endp
end begin

Вот такие глюки.
Кстати, ради прикола, это работает под WinXP??
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #57 : 20-08-2003 05:35 » 

Цитата

Кстати, ради прикола, это работает под WinXP??


Конечно нет! Никто тебе не даст в NT трогать таблицу IDT. Тебе надо понять - 95/98 и NT - это разные вещи.

Разберем твой код. Я его перевел на С, так как на асме не компилю
Код:

__declspec) naked : void int3_Handler):
|
__asm
|
mov [ecx+18h+00h(, ax ;
    mov [ecx+18h+06h(, dx ;
    iretd ;
"
";

int _tmain)int argc, _TCHAR* argv[(:
|
__asm
|
push eax;
        push eax ;
        sidt [esp + 02h( ;
        pop  eax ;
pop  ecx;
mov  eax, offset int3_Handler ;
        mov  edx, eax ;
        shr  edx, 10h;
 
        xchg [ecx+18h+00h(, ax ;
        xchg [ecx+18h+06h(, dx ;
        int 3
"

return 0;
"



Естественно после запуска все это вылетает на строчке    xchg [ecx+18h+00h], ax ;  так как в ecx адрес IDT, а эта IDT находится в системном адресном пространстве, доступ к этим страницам разрешен только с CPL==0, а ты туда лезеш с CPL==3. Вот и получаешь по рукам.
Ты представляешь, если бы такой баг был в NT!
Тебе надо пересмотреть свое отношение к NT и не переносить баги 95/98 на NT.

Таким образом я делаю вывод, что фраза
Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...


не более чем заблуждение, связанное с незнанием архитектуры NT систем.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #58 : 20-08-2003 05:37 » 

А ты что оперрационку на ассемблере пишешь? По моему это ошибка.
Записан
.
Молодой специалист

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

« Ответ #59 : 20-08-2003 08:56 » 

Цитата
Конечно нет! Никто тебе не даст в NT трогать таблицу IDT. Тебе надо понять - 95/98 и NT - это разные вещи.

1. Я не говорил, что НТ и 98 - одинаковые. Я прекрасно знаю архитектуру первой и второй.
Цитата
Разберем твой код. Я его перевел на С, так как на асме не компилю
Под винды на асме я пишу много, и в 98% это не отличается от программирования на Си. Поэтому я не задавался вопросом о виде этой проги на Си

Цитата
Тебе надо пересмотреть свое отношение к NT и не переносить баги 95/98 на NT.
Я не переношу отношение к 98х на НТ. Даже
об этом "приколе" я узнал очень случайно!
Цитата
Таким образом я делаю вывод, что фраза
Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...

не более чем заблуждение, связанное с незнанием архитектуры NT систем.
Здесь ты не прав, и сейчас поясню почему. Здесь работает другая ошибка МелкоМягких - адреса процедур.

1. Во всех процессах адрес процедуры ExitProcess(...) один и тот же.
2. ты можешь установить таймер для ЛЮБОГО процесса, у которого знаешь PID

Дальше, надеюсь, объяснять не надо
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Цитата: SlavaI
А ты что оперрационку на ассемблере пишешь? По моему это ошибка.

Не совсем так. Первая версия (только машинного кода ~600K - я не говорю о возможностях) была написано полностью на ассемблере из-за лени преписать компилятор под свой формат бинарей (поддержку других форматов мне еще предстоит написать. версии, эдак, в третьей или два с половиной). Но из-за погибшего :twisted: от старости харда погибло всё, поэтому вторая версия будет уже немного с другой архитектурой и написана на Си с ассемблерными вставками, где это нужно и откомпилирована немного помучанным GNU-компилятором.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #60 : 20-08-2003 09:18 » 

Хм... интереснее и интереснее....
Так баг есть или нет Улыбаюсь  Ага
Записан

А птичку нашу прошу не обижать!!!
.
Молодой специалист

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

« Ответ #61 : 20-08-2003 09:30 » 

баг с процессами есть. С IDT - надо тестить вручную
Записан
Anonymous
Гость
« Ответ #62 : 20-08-2003 10:07 » 

Цитата

1. Во всех процессах адрес процедуры ExitProcess(...) один и тот же.
2. ты можешь установить таймер для ЛЮБОГО процесса, у которого знаешь PID

Дальше, надеюсь, объяснять не надо  


Надо. Я ничерта не понял. Ты все убеждаешь меня, что ты можешь из любого процесса влезть в память другого.
Очень интересно. Расскажи-ка про NT. Только делай все с правами обычного юзера.
Когда мы увидим работающий код с помощью которого я смогу долбануть системный сервис, запустив этот код из под обычного юзера. Причину неработспособности приведенного тобой кода я объяснил.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #63 : 20-08-2003 10:12 » 

Цитата

баг с процессами есть. С IDT - надо тестить вручную


Код приведи.
Что там тестить-то. Нельзя до этой страницы добраться с правами простого юзера, процессор не даст, нужен CPL==0.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #64 : 20-08-2003 10:14 » 

Цитата

Хм... интереснее и интереснее....
Так баг есть или нет  


На данный момент наиболее забавным багом был DebPloit, код есть на этом сайте. Но он уже пофиксен самой Макрософт.
Создается впечатление, что просто товарищ путает Win98 и WinNT.
Записан
.
Молодой специалист

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

« Ответ #65 : 20-08-2003 10:24 » 

SlavaI, Нифига я не путаю!
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #66 : 20-08-2003 10:49 » 

Я думаю, что прав все же Славик, сам такого же мнения, но так же уверен на 100% что без кода для 2000 или NT который сделает вышеописанное, нам дискутировать попросту не о чем...
Код в студию.
Записан

А птичку нашу прошу не обижать!!!
.
Молодой специалист

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

« Ответ #67 : 20-08-2003 10:55 » 

Цитата: Гром
Код в студию.
Код будет через неделю-полторы  Отлично (причин объяснять не буду)
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #68 : 20-08-2003 11:08 » 

Ок - отложим.
Записан

А птичку нашу прошу не обижать!!!
Anonymous
Гость
« Ответ #69 : 20-08-2003 11:58 » 

Цитата

SlavaI, Нифига я не путаю!


Но кода-то нет. И объяснить ты толком не можешь, что-то про одинаковые адресса сказал и все. И что из этого следует?
А теперь говоришь, что через неделю код будет. Очень странно.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #70 : 20-08-2003 12:01 » 

Предыдущие сообщение мое.
Записан
.
Молодой специалист

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

« Ответ #71 : 20-08-2003 12:07 » 

Цитата: SlavaI
Цитата

SlavaI, Нифига я не путаю!


Но кода-то нет. И объяснить ты толком не можешь, что-то про одинаковые адресса сказал и все. И что из этого следует?
А теперь говоришь, что через неделю код будет. Очень странно.
Код есть, но он будет доступен мне не скоро - я еще не знаю, когда дома за комп сяду, не то, что озадачиться и найти эту прогу. Писать заного - лень: помимо работы, других прог не мало. Еще и заказы со стороны, а еще и для себя что-то хочется...
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #72 : 21-08-2003 04:54 » 

Цитата

Код есть, но он будет доступен мне не скоро


Ждем две недели.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #73 : 21-08-2003 09:22 » 

SlavaI,  Отлично
Записан

А птичку нашу прошу не обижать!!!
Dimitry
Гость
« Ответ #74 : 28-08-2003 05:29 » 

Цитата: SlavaI

Таким образом я делаю вывод, что фраза
Цитата

Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...


не более чем заблуждение, связанное с незнанием архитектуры NT систем.

Такой вывод делать рановато. Описанный баг(в NT!) действительно есть. Только вырубить можно только процесс, имеющий очередь сообщений. Вот пример простенькой программы для NT, которая это делает(при попытке выключения процессов в 9x совершается некорректная операция, поэтому не используйте её с этими ОСями).
Исполняемый модуль:
 http://www.icqorg.newmail.ru/NTKILLER.EXE (3Kb)
Ключевой фрагмент кода на Assembler'е:
 http://www.icqorg.newmail.ru/NTKILLER.TXT (~1,5Kb)
Хостинг бесплатный, поэтому возможны "тормоза" при скачивании. Если совсем откажется скачиваться, могу выслать на E-Mail.

P.S. Загрузившись guest'ом, вы спокойно сможете отключить WinLogon(помните, что его завершение приводит к BSOD), Spool'ер печати или клиентские программы компьютерных клубов, выполняющиеся как службы.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #75 : 28-08-2003 05:51 » 

Цитата

 Загрузившись guest'ом, вы спокойно сможете отключить WinLogon(помните, что его завершение приводит к BSOD),


Проверил на XP SP1-не работает. На 2k SP2 работает. Чудес не бывает(MS это наверно пофиксила, или структуры сильно изменились). На родной NT4 проверить нет возможности. Ну не к BSOD, а к перезагрузке системы, так как система запустив этот процесс ждет на его handle, и при завершении процесса запускает процедуру выключения системы. Только добится этого с помощью этой проги на XP мне не удалось.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #76 : 28-08-2003 07:19 » 

А вобще забавная прога. Да можно признать на NT/2k глюк есть.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #77 : 28-08-2003 09:22 » 

Да TJSoft оправдан + в популярность...
Записан

А птичку нашу прошу не обижать!!!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #78 : 28-08-2003 09:27 » 

Цитата

Да TJSoft оправдан + в популярность...


Я вредный! Пусть на XP заработает! Отлично
Записан
Dimitry
Гость
« Ответ #79 : 29-08-2003 04:33 » 

Я проверял на русской XP, на ней это приводило к BSOD, только надо было его включить(по умолчангию выполнялась перезагрузка, а не показ BSOD). Какой у меня стоит SP не помню, завтра скажу.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #80 : 29-08-2003 04:54 » 

Цитата

Я проверял на русской XP, на ней это приводило к BSOD, только надо было его включить(по умолчангию выполнялась перезагрузка, а не показ BSOD


Ну точно не работает на SP1, локализация тут не влияет.
Записан
Страниц: 1 2 3 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines