sss
Специалист
Offline
|
|
« : 01-08-2003 08:47 » |
|
Кто скажет, если вызвать прерывание в 0 кольце что произойдет ?
|
|
|
Записан
|
while (8==8)
|
|
|
RXL
|
|
« Ответ #1 : 01-08-2003 09:01 » |
|
Прерывание В доке по процессору описаны варианты прерываний с/без смены уровня привилегий. Короче, нужно уточнение - чего ты хочешь узнать?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
sss
Специалист
Offline
|
|
« Ответ #2 : 01-08-2003 09:16 » |
|
Прерывание В доке по процессору описаны варианты прерываний с/без смены уровня привилегий. Короче, нужно уточнение - чего ты хочешь узнать? Там вопрос есть про PCI, я щас не помню номера, называется прерывание - чтение конфигурационного просранства PCI.
|
|
|
Записан
|
while (8==8)
|
|
|
sss
Специалист
Offline
|
|
« Ответ #3 : 01-08-2003 09:17 » |
|
Лично меня интересует технолоgy установки обработчика...
|
|
|
Записан
|
while (8==8)
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #4 : 04-08-2003 05:43 » |
|
А ты что в винде хочешь прерывание вызвать? Можно конечно свой обработчик написать и поместить на него указатель в IDT. И тогда при вызове int X будет вызван он. Но это немного против правил, так как самостоятельное изменение IDT в винде не предусмотренно, но и запретить это сделать тебе нельзя. А как должен выглядеть обработчик прерывания, что надо прописать в IDT, и что происходит со стеком при смене и без смены привилегий -читай в документации Intel.
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #5 : 05-08-2003 02:55 » |
|
Вопрос в том, будут ли работать прерывания (BIOS), или нет ?
|
|
|
Записан
|
while (8==8)
|
|
|
SlavaI
Главный специалист
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
Главный специалист
Offline
|
|
« Ответ #7 : 05-08-2003 06:48 » |
|
В ядре есть ф-ция Ke386CallBios , можешь ее дизассемблировать и посмотреть что она делает, может тебе поможет, там что-то с режимом виртуального 86 связано. Упоминание об этой ф-ции есть только тут http://www.ntdev.org/archive/ntdev9710/msg0093.html
|
|
|
Записан
|
|
|
|
sss
Специалист
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
Главный специалист
Offline
|
|
« Ответ #9 : 06-08-2003 07:11 » |
|
Найденные тобой шлюзы задач предназначены для обеспечения переключения задач в момент показа BSOD и скидывания дампа ядра. Помогите сделать дизасм.
А ты отладчик ядра хоть какой нибудь себе поставь(SoftIce, WinDbg, i386kd.exe). Для дизасма можно использовать livekd, он запускает отладчик на одной машине передавая дамп ядра. Где скачать файлы символьных id's (symbolsx.exe + symbols.cab)
Что за имена symbols? Это кто? Символьные файлы на сайте Microsoft.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
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
Специалист
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
Главный специалист
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
Специалист
Offline
|
|
« Ответ #13 : 06-08-2003 09:32 » |
|
SlavaI спасибо.
|
|
|
Записан
|
while (8==8)
|
|
|
sss
Специалист
Offline
|
|
« Ответ #14 : 07-08-2003 08:56 » |
|
Пробовал дизассемблеры. Не получилось в WinDbg. Ему подовай exe или crash dump. Вспомнил про sourcer. Ложу кусок памяти в файл, и в sourcer'e задаю режим "кусок кода" из файла. Староват правда. В режиме директивы .486p получается вначале нечто похожее что и у SlavaI. Дальше - херня. Кто скажет, какие "офицальные" минимальные системные требования у WIN2000 ? И кто еще может подобно sourcer дизасм кусков делать, только поновее?
|
|
|
Записан
|
while (8==8)
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #15 : 07-08-2003 09:39 » |
|
какие "офицальные" минимальные системные требования у WIN2000
У меня есть машинка Celeron 300 МГц, 96 Мб памяти. Нормально работает Win200 Server. Для экспериментов достаточно.
|
|
|
Записан
|
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #17 : 08-08-2003 09:32 » |
|
Для исследования дампа WinDBG поудобнее. Все таки графический интерфейс есть, а команды он воспринимает те же что и i386kd.exe.
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #18 : 12-08-2003 02:53 » |
|
SlavaI, учту
|
|
|
Записан
|
while (8==8)
|
|
|
sss
Специалист
Offline
|
|
« Ответ #19 : 14-08-2003 07:39 » |
|
Настроил два компа на debug по null modem (i386kd). Подскажите, кроме передачи дампа, можно debuggiть ядро на лету ? Может какие другие отладчики имеются с такой возможностью ? P.S: был атакован msblast. MS Server 2000 не рушился в ресет, но вирус производил отказ службы svchost со всеми вытекающими последствиями. Во внутреннюю сеть не пролез.
|
|
|
Записан
|
while (8==8)
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #20 : 14-08-2003 07:49 » |
|
Подскажите, кроме передачи дампа, можно debuggiть ядро на лету ?
Он для этого и предназначен. Никакой дамп он не передает. Посмотри список команд- там есть break point. Отладка работающего ядра- это и есть работа для i386kd или WinDbg. Читай help к дебагеру. Есть еще SoftIce, работает на одном компе, но ограничен в возможностях по сравнению с i386kd или WinDbg. вирус производил отказ службы svchost
Вобще-то аварийный останов службы RPC. Svchost- это прога которая хостит разные службы, написанные в виде dll. В ресет уходит только XP из-за остановки службы безопасности, на 2k она не останавливается, хотя если самому ее прибить, то и 2k перегрузится.
|
|
|
Записан
|
|
|
|
sss
Специалист
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
Главный специалист
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
Специалист
Offline
|
|
« Ответ #23 : 14-08-2003 08:47 » |
|
... там для ядра 3 компа нужно! ЗАЧЕМ ?
|
|
|
Записан
|
while (8==8)
|
|
|
SlavaI
Главный специалист
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
Специалист
Offline
|
|
« Ответ #25 : 14-08-2003 09:02 » |
|
ёмоё, у меня документ по старту дебугера для win 3.51 ! Вот я тупость :oops:. SlavaI, у меня все это хозяйство дома, а смесь такая, потому что денег на второй нормальный комп нет Попробую как ты написал, завтра раскажу....
|
|
|
Записан
|
while (8==8)
|
|
|
sss
Специалист
Offline
|
|
« Ответ #26 : 14-08-2003 09:10 » |
|
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
Главный специалист
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
Специалист
Offline
|
|
« Ответ #29 : 18-08-2003 04:27 » |
|
Это я был выше...
|
|
|
Записан
|
while (8==8)
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #30 : 18-08-2003 05:21 » |
|
Это я был выше...
Вот и у меня на прошлой неделе что-то с автоматическим входом не так было.
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #31 : 18-08-2003 15:33 » |
|
А ты что в винде хочешь прерывание вызвать? Можно конечно свой обработчик написать и поместить на него указатель в IDT. И тогда при вызове int X будет вызван он. Но это немного против правил, так как самостоятельное изменение IDT в винде не предусмотренно, но и запретить это сделать тебе нельзя. А как должен выглядеть обработчик прерывания, что надо прописать в IDT, и что происходит со стеком при смене и без смены привилегий -читай в документации Intel. :!: При очередном билде первой версии в ноябре прошого года (надеюсь, что через несколько месяцев будет вторая) моей операционной системы (полноценная ось, но первая версия безвозвратно поибла ), я обнаружил, что из процесса с уровнем привелегий 3 в Win98 можно реально вылезти в 0 кольцо привелегий :!: без особых на то усилий.
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #32 : 18-08-2003 15:36 » |
|
да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU в Win98, обращайтесь лично
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #33 : 18-08-2003 18:27 » |
|
Давай... на каких условиях?
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #34 : 19-08-2003 05:16 » |
|
да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU в Win98, обращайтесь лично
Я в 98/95 не работаю, но точно знаю, что это уже сделано. Только на кой это нужно, кому нужна 95/98 сейчас. Там помимо этого куча других дыр, хотя бы то что все системные dll общие для всех процессов и если один изменит ее то это скажется на всех. Собственно при разработке этих систем вопрос безопасности не ставился.
|
|
|
Записан
|
|
|
|
sss
Специалист
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 долларов военным и отстали бы от тебя.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #37 : 19-08-2003 07:57 » |
|
sss, ну тогда удачи.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
sss
Специалист
Offline
|
|
« Ответ #38 : 19-08-2003 08:09 » |
|
Спасибо Гром. А про 400$, это мой заработок за 3 месяца. А предлогают стать офицером ФСБ. Все пригодиться.
|
|
|
Записан
|
while (8==8)
|
|
|
sss
Специалист
Offline
|
|
« Ответ #39 : 19-08-2003 08:10 » |
|
PS: гость - SlavaI ?
|
|
|
Записан
|
while (8==8)
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #40 : 19-08-2003 09:01 » |
|
PS: гость - SlavaI ?
Ага, я. А вот я стал лейтенантом запаса РВСН(Ракетные Войска Стратегического Назначения). 8) :!: РВСН- это хорошо!
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #41 : 19-08-2003 09:05 » |
|
да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо CPU в Win98, обращайтесь лично
Я в 98/95 не работаю, но точно знаю, что это уже сделано. Только на кой это нужно, кому нужна 95/98 сейчас. Там помимо этого куча других дыр, хотя бы то что все системные dll общие для всех процессов и если один изменит ее то это скажется на всех. Собственно при разработке этих систем вопрос безопасности не ставился. Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #42 : 19-08-2003 09:06 » |
|
РВСН- это хорошо!
|
|
|
Записан
|
while (8==8)
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #43 : 19-08-2003 09:11 » |
|
Только на кой это нужно, кому нужна 95/98 сейчас. Мне! Там есть очень удобная фишка - ДОС, он же реальный режим CPU, возможность загрузить очередной билд ОСи!!!
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #44 : 19-08-2003 09:58 » |
|
Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...
Ну так расскажи как. Я уже один знаю- надо быть админом.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #45 : 19-08-2003 10:00 » |
|
Мне! Там есть очень удобная фишка - ДОС, он же реальный режим CPU, возможность загрузить очередной билд ОСи!!!
Ну и что. Реальный режим- это жуткий пережиток, по нормальному его надо было убрать. А у тебя что- ось только в реальном режиме работает?
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #46 : 19-08-2003 10:40 » |
|
Ну и что. Реальный режим- это жуткий пережиток, по нормальному его надо было убрать. А у тебя что- ось только в реальном режиме работает? Не не прав! CPU загружается в защищенном режиме (начиная с i386), потом по первому прерыванию (таймера) переходит в реальный (начиная с i386 это уже фантом и пережиток прошлого). Далее ЛЮБАЯ ось защещенного режима установливаем свою адресацию и т.д. => Для того, чтобы иметь право загрузить свою ось тебе ПРИДЕТСЯ поиметь привелегии на это: Либо нулевое колечко (с творогом ) либо реальный режим, где все привелегии отсутствуют (своеобразная анархия)
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #47 : 19-08-2003 10:42 » |
|
Любая NT(в том числе и хваленая всеми XP) стражает глюком, что можно вырубить ЛЮБОЙ процесс из третьего кольца привелегий...
Ну так расскажи как. Я уже один знаю- надо быть админом. Нет этот способ онован неа том, что все функции kernel.dll в виндах имеют одни и те же линейные адреса во всех процессах
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #48 : 19-08-2003 11:39 » |
|
Нет этот способ онован неа том, что все функции kernel.dll в виндах имеют одни и те же линейные адреса во всех процессах
Ну и что? Что дальше-то. Я подобных фактов до кучи знаю. Ты мне приведи пример, когда имея права простого юзера долбанули процесс сервиса, например RPC (пример Lovesan, DebPloit не приводить). Будет еще один глюк, теперь на уровне управления памяти, а ты обессмертишь свое имя. У страниц, по которым отображены системные dll, атрибут copy on write. Фишка с изменением системных dll, как в Win95/98 не пройдет. К тому же kernel32.dll
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #49 : 19-08-2003 11:45 » |
|
Не не прав! CPU загружается в защищенном режиме (начиная с i386), потом по первому прерыванию (таймера) переходит в реальный (начиная с i386 это уже фантом и пережиток прошлого). Далее ЛЮБАЯ ось защещенного режима установливаем свою адресацию и т.д. => Для того, чтобы иметь право загрузить свою ось тебе ПРИДЕТСЯ поиметь привелегии на это: Либо нулевое колечко (с творогом ) либо реальный режим, где все привелегии отсутствуют (своеобразная анархия)
Во, блин, научил. Как же IA 64 без твоего чудного реального режима работает. Ты просто зациклился на IA 32. Наверно хватит применять мерки IA 32 ко всем процессорам на свете.
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #50 : 19-08-2003 12:45 » |
|
Во, блин, научил. Как же IA 64 без твоего чудного реального режима работает. Ты просто зациклился на IA 32. Наверно хватит применять мерки IA 32 ко всем процессорам на свете. Создавать процессор с 64-битной шиной не выгодно, если нет обратной совместитмости - его либо просто покупать не будут, либо он будет слишком дешевым - ты же не в голой винде сидишь 8), а большая часть софта - не Open-Source, даже, если и freeware.. К тому же Amd64 уже это поддерживает, а конкуренцию держать надо!
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
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 разрядной шины- шина адреса меньше, а данных больше. Разрядность процессора обычно определяют по разрядности основных регистров, а уж никак не по шине.
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #52 : 19-08-2003 13:00 » |
|
Мы отклонились от темы...
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #53 : 19-08-2003 13:03 » |
|
Мы отклонились от темы...
Да, ты обещал баг в управлении памятью в NT-XP.
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #54 : 19-08-2003 13:10 » |
|
Да, ты обещал баг в управлении памятью в NT-XP.
Позже - я сейчас на работе, все-таки...
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #55 : 19-08-2003 13:11 » |
|
Мы отклонились от темы...
Если при этом вторая тема интересна - то можно... Да и как насчет бага - внимательно слежу!!!
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #56 : 19-08-2003 16:29 » |
|
да, чуть не забыл. Если понадобиться код программы для того, чтобы вылезти в нулевое кольцо 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
Главный специалист
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
Главный специалист
Offline
|
|
« Ответ #58 : 20-08-2003 05:37 » |
|
А ты что оперрационку на ассемблере пишешь? По моему это ошибка.
|
|
|
Записан
|
|
|
|
.
Молодой специалист
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 Дальше, надеюсь, объяснять не надо ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ А ты что оперрационку на ассемблере пишешь? По моему это ошибка. Не совсем так. Первая версия (только машинного кода ~600K - я не говорю о возможностях) была написано полностью на ассемблере из-за лени преписать компилятор под свой формат бинарей (поддержку других форматов мне еще предстоит написать. версии, эдак, в третьей или два с половиной). Но из-за погибшего :twisted: от старости харда погибло всё, поэтому вторая версия будет уже немного с другой архитектурой и написана на Си с ассемблерными вставками, где это нужно и откомпилирована немного помучанным GNU-компилятором.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #60 : 20-08-2003 09:18 » |
|
Хм... интереснее и интереснее.... Так баг есть или нет
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #61 : 20-08-2003 09:30 » |
|
баг с процессами есть. С IDT - надо тестить вручную
|
|
|
Записан
|
|
|
|
Anonymous
Гость
|
|
« Ответ #62 : 20-08-2003 10:07 » |
|
1. Во всех процессах адрес процедуры ExitProcess(...) один и тот же. 2. ты можешь установить таймер для ЛЮБОГО процесса, у которого знаешь PID
Дальше, надеюсь, объяснять не надо
Надо. Я ничерта не понял. Ты все убеждаешь меня, что ты можешь из любого процесса влезть в память другого. Очень интересно. Расскажи-ка про NT. Только делай все с правами обычного юзера. Когда мы увидим работающий код с помощью которого я смогу долбануть системный сервис, запустив этот код из под обычного юзера. Причину неработспособности приведенного тобой кода я объяснил.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #63 : 20-08-2003 10:12 » |
|
баг с процессами есть. С IDT - надо тестить вручную
Код приведи. Что там тестить-то. Нельзя до этой страницы добраться с правами простого юзера, процессор не даст, нужен CPL==0.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #64 : 20-08-2003 10:14 » |
|
Хм... интереснее и интереснее.... Так баг есть или нет
На данный момент наиболее забавным багом был DebPloit, код есть на этом сайте. Но он уже пофиксен самой Макрософт. Создается впечатление, что просто товарищ путает Win98 и WinNT.
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #65 : 20-08-2003 10:24 » |
|
SlavaI, Нифига я не путаю!
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #66 : 20-08-2003 10:49 » |
|
Я думаю, что прав все же Славик, сам такого же мнения, но так же уверен на 100% что без кода для 2000 или NT который сделает вышеописанное, нам дискутировать попросту не о чем... Код в студию.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #67 : 20-08-2003 10:55 » |
|
Код в студию. Код будет через неделю-полторы (причин объяснять не буду)
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #68 : 20-08-2003 11:08 » |
|
Ок - отложим.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Anonymous
Гость
|
|
« Ответ #69 : 20-08-2003 11:58 » |
|
SlavaI, Нифига я не путаю!
Но кода-то нет. И объяснить ты толком не можешь, что-то про одинаковые адресса сказал и все. И что из этого следует? А теперь говоришь, что через неделю код будет. Очень странно.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #70 : 20-08-2003 12:01 » |
|
Предыдущие сообщение мое.
|
|
|
Записан
|
|
|
|
.
Молодой специалист
Offline
Пол:
|
|
« Ответ #71 : 20-08-2003 12:07 » |
|
SlavaI, Нифига я не путаю!
Но кода-то нет. И объяснить ты толком не можешь, что-то про одинаковые адресса сказал и все. И что из этого следует? А теперь говоришь, что через неделю код будет. Очень странно. Код есть, но он будет доступен мне не скоро - я еще не знаю, когда дома за комп сяду, не то, что озадачиться и найти эту прогу. Писать заного - лень: помимо работы, других прог не мало. Еще и заказы со стороны, а еще и для себя что-то хочется...
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #72 : 21-08-2003 04:54 » |
|
Код есть, но он будет доступен мне не скоро
Ждем две недели.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #73 : 21-08-2003 09:22 » |
|
SlavaI,
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
Dimitry
Гость
|
|
« Ответ #74 : 28-08-2003 05:29 » |
|
Таким образом я делаю вывод, что фраза Любая 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
Главный специалист
Offline
|
|
« Ответ #75 : 28-08-2003 05:51 » |
|
Загрузившись guest'ом, вы спокойно сможете отключить WinLogon(помните, что его завершение приводит к BSOD),
Проверил на XP SP1-не работает. На 2k SP2 работает. Чудес не бывает(MS это наверно пофиксила, или структуры сильно изменились). На родной NT4 проверить нет возможности. Ну не к BSOD, а к перезагрузке системы, так как система запустив этот процесс ждет на его handle, и при завершении процесса запускает процедуру выключения системы. Только добится этого с помощью этой проги на XP мне не удалось.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #76 : 28-08-2003 07:19 » |
|
А вобще забавная прога. Да можно признать на NT/2k глюк есть.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #77 : 28-08-2003 09:22 » |
|
Да TJSoft оправдан + в популярность...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #78 : 28-08-2003 09:27 » |
|
Да TJSoft оправдан + в популярность...
Я вредный! Пусть на XP заработает!
|
|
|
Записан
|
|
|
|
Dimitry
Гость
|
|
« Ответ #79 : 29-08-2003 04:33 » |
|
Я проверял на русской XP, на ней это приводило к BSOD, только надо было его включить(по умолчангию выполнялась перезагрузка, а не показ BSOD). Какой у меня стоит SP не помню, завтра скажу.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #80 : 29-08-2003 04:54 » |
|
Я проверял на русской XP, на ней это приводило к BSOD, только надо было его включить(по умолчангию выполнялась перезагрузка, а не показ BSOD
Ну точно не работает на SP1, локализация тут не влияет.
|
|
|
Записан
|
|
|
|
|