Посл.ответ |
Сообщение |
Ранг: 62.3 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 03 марта 2007 09:30 · Личное сообщение · #1
Как изменить таблицу прерываний программно на двухядерных машинах?
sidt возвращает адрес IDT процесора на котором выполняется, второй проц не трогает, а надо поменять на обих процах.
| Сообщение посчитали полезным: |
|
Ранг: 113.0 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 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.01↘0 Статус: Участник
|
Создано: 03 марта 2007 12:52 · Личное сообщение · #3
IPI - основное средство для этого, от APIC. Средствами винды - с пом. ф-ии KeSetTargetProcessorDpc
| Сообщение посчитали полезным: |
Ранг: 62.3 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 03 марта 2007 23:12 · Личное сообщение · #4
wormking
Щас испробуем
| Сообщение посчитали полезным: |
Ранг: 186.8 (ветеран) Активность: 0.04↘0 Статус: Участник
|
Создано: 05 марта 2007 06:17 · Личное сообщение · #5
Я искал способом, который юзал XProtecor. Выдранный алго получил от dragon-a. Хотя способ недокументированный, но работал безглючно.
| Сообщение посчитали полезным: |
Ранг: 39.1 (посетитель) Активность: 0.03↘0 Статус: Участник
|
Создано: 05 марта 2007 06:49 · Личное сообщение · #6
и что это за такой секретный алго? можно его выложить то?
| Сообщение посчитали полезным: |
Ранг: 22.5 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 05 марта 2007 09:16 · Личное сообщение · #7
емнип там скан на KPCR в памяти
| Сообщение посчитали полезным: |
Ранг: 2014.5 (!!!!), 1278thx Активность: 1.34↘0.25 Статус: Модератор retired
|
Создано: 06 марта 2007 00:33 · Личное сообщение · #8
Faza
Лично я для хука IDT на многопроцессорных тачках взял код Сида из стриппера, он на С и основан на цикле по цислу процессоров, где вызывается устанавливается AffinityMask а хучится IDT. В принципе могу дать сам алго, моя ася у тебя есть, пиши.
Если у кого есть код на асме, то я его ищу, ибо переписывать самому лениво.
| Сообщение посчитали полезным: |
Ранг: 62.3 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 06 марта 2007 21:10 · Личное сообщение · #9
Archer
У меня то есть твоя аська ?
Не я че-то врубится не могу от куда такая секретность в отношении как переключить процесс на процессор, боитесь что со следующем сервис паком эта фишка работать не будет ? или создатели протов напрочь поменяют весь алгоритм преключение процесоров в винде ?
| Сообщение посчитали полезным: |
Ранг: 793.4 (! !), 568thx Активность: 0.74↘0 Статус: Участник Шаман
|
Создано: 06 марта 2007 21:37 · Личное сообщение · #10
Ну пока что все кто сказал что есть сорсы юзают не свои сорсы и разрешения на публикование им никто не давал, так что всё правильно делают ИМХО.
----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: |
Ранг: 228.7 (наставник), 2thx Активность: 0.12↘0 Статус: Участник malware research
|
Создано: 06 марта 2007 22:44 · Личное сообщение · #11
wormking пишет:
Средствами винды - с пом. ф-ии KeSetTargetProcessorDpc
У меня есть код Ms-Rem, там как раз через DPC сделанно. Он вроде говорил что на васме его вылаживал хотя хз этот или нет.
----- Research is my purpose | Сообщение посчитали полезным: |
Ранг: 22.5 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 07 марта 2007 02:11 · Личное сообщение · #12
даже если не этот, это один из стандартных способов выполнить код на заданном процессоре, в гугле должно быть много примеров ее использования
| Сообщение посчитали полезным: |
Ранг: 47.7 (посетитель), 17thx Активность: 0.09↘0 Статус: Участник
|
Создано: 08 ноября 2011 16:05 · Личное сообщение · #13
PCR -> IDT, PCR -> GDT(HalpProcessorPCR[]) KiAbiosGdt[] -> GDT, GDT -> PCR KeIpiGenericCall()
| Сообщение посчитали полезным: |