Сейчас на форуме: UniSoft, laslo, bartolomeo (+5 невидимых)

 eXeL@B —› Программирование —› IDT на двухядерниках
Посл.ответ Сообщение

Ранг: 62.3 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 03 марта 2007 09:30
· Личное сообщение · #1

Как изменить таблицу прерываний программно на двухядерных машинах?
sidt возвращает адрес IDT процесора на котором выполняется, второй проц не трогает, а надо поменять на обих процах.




Ранг: 113.0 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 03 марта 2007 11:16
· Личное сообщение · #2

Много тысяч извинений за флейм (так как я нифига в многопроцессорных машинах)!

(просто очень интересно как управляет OS исполнением задач). Наверное, если поток выполняется процессором J, и раз будет получена IDTj, то можно дожидаться в цикле пока твой поток не начнет выполнять нужный процессор K (текущий процессор узнать по CPUID?). Но это тупо, по идее раз OS может выполнять переключение контекстов (те заставить выполнять конкретный код именно конкретный процессор), то она может выполнять управление процессорами (через порт 64h?..), она же выполняет переинициализацию IDT... Возможно, OS разместила обе IDT в памяти подряд, можно найти первую и вторую поискать рядом (bpm'ом найти кусок ядра который занимается переинициализацией и найти в нем как он разбирается с процессорами?)..

-----
The one derivative you manage is the one I abhore (c) Slipknot




Ранг: 22.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 03 марта 2007 12:52
· Личное сообщение · #3

IPI - основное средство для этого, от APIC. Средствами винды - с пом. ф-ии KeSetTargetProcessorDpc



Ранг: 62.3 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 03 марта 2007 23:12
· Личное сообщение · #4

wormking
Щас испробуем



Ранг: 186.8 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 05 марта 2007 06:17
· Личное сообщение · #5

Я искал способом, который юзал XProtecor. Выдранный алго получил от dragon-a. Хотя способ недокументированный, но работал безглючно.



Ранг: 39.1 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 05 марта 2007 06:49
· Личное сообщение · #6

и что это за такой секретный алго? можно его выложить то?



Ранг: 22.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 05 марта 2007 09:16
· Личное сообщение · #7

емнип там скан на KPCR в памяти




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 06 марта 2007 00:33
· Личное сообщение · #8

Faza
Лично я для хука IDT на многопроцессорных тачках взял код Сида из стриппера, он на С и основан на цикле по цислу процессоров, где вызывается устанавливается AffinityMask а хучится IDT. В принципе могу дать сам алго, моя ася у тебя есть, пиши.
Если у кого есть код на асме, то я его ищу, ибо переписывать самому лениво.



Ранг: 62.3 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 06 марта 2007 21:10
· Личное сообщение · #9

Archer
У меня то есть твоя аська ?

Не я че-то врубится не могу от куда такая секретность в отношении как переключить процесс на процессор, боитесь что со следующем сервис паком эта фишка работать не будет ? или создатели протов напрочь поменяют весь алгоритм преключение процесоров в винде ?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 06 марта 2007 21:37
· Личное сообщение · #10

Ну пока что все кто сказал что есть сорсы юзают не свои сорсы и разрешения на публикование им никто не давал, так что всё правильно делают ИМХО.

-----
Yann Tiersen best and do not fuck




Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 06 марта 2007 22:44
· Личное сообщение · #11

wormking пишет:
Средствами винды - с пом. ф-ии KeSetTargetProcessorDpc


У меня есть код Ms-Rem, там как раз через DPC сделанно. Он вроде говорил что на васме его вылаживал хотя хз этот или нет.

-----
Research is my purpose




Ранг: 22.5 (новичок)
Активность: 0.010
Статус: Участник

Создано: 07 марта 2007 02:11
· Личное сообщение · #12

даже если не этот, это один из стандартных способов выполнить код на заданном процессоре, в гугле должно быть много примеров ее использования



Ранг: 47.7 (посетитель), 17thx
Активность: 0.090
Статус: Участник

Создано: 08 ноября 2011 16:05
· Личное сообщение · #13

PCR -> IDT, PCR -> GDT(HalpProcessorPCR[])
KiAbiosGdt[] -> GDT, GDT -> PCR
KeIpiGenericCall()


 eXeL@B —› Программирование —› IDT на двухядерниках
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати