GUI & Kernel Mode

Тема в разделе "WASM.NT.KERNEL", создана пользователем Dian, 4 дек 2008.

  1. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Great

    Привет. Функцию ищу ту же DrvCopyBits, причем проблем больших то не было по ее поиску - ты берешь в exe который грузит дров вызываешь ряд функций из r3 и их же перехватываешь в ядре (трасировка стека) - но суть не в этом ( сисер и сойфтайс тупо перехватывают регистрацию видео драйвера во время самой ранней загрузки системы) - это просто (даже это Win32k driver not maped обходится :)). Теперь самое сложное - синхрониация - у nVidea довольно много таймеров мьютексов и спинлоков во всех функциях вывода а экран. Далее отладчик может "всплыть" в контексте абсолютно любого потока и вызов global.DrvCopyBits может зависнуть на дедлоке -поскольку отладчик ядра останавливает выполнение всех потоков на время своего выполнения - я скажу более на многопроцессорной машине с видеокартой мепирующей свою видеопамять нелинейно зависания довольно частые. Т.о. нахождение DrvCopyBits - это самое легкое что может быть - да еще очень сильно помогает DrvCreateDeviceBitmap. Пока коммерческое решение реально на основе раннего перехвата и подмены колбеков.

    А теперь самое интересное - запусти 3D игрушку и все :) У меня на GeForce 8800 получаю несколько первичных поверхностей и на какую выводить чтобы изображение отображалось на экране непоняно - т.е. я следил за текущей активной "первичной" поверхностью (но вышла виста и маленько подзабросил)

    PS:
    Ну отладчик дело хорошее - если нужна помощь - стучи в приват :)
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    есть такой ядреный отладчик BlindStudio от mamaich'а в сорцах
     
  3. reversecode

    reversecode Guest

    Публикаций:
    0
    делайте как это делает sysser
    хучите функции и выводите через них
    а получать прямой линейный адресс не всегда получиться
    не все видео карты это позволяют
     
  4. 4VR

    4VR New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2008
    Сообщения:
    25
    может проще было взять готовый видеодрайвер от айса и юзать его в своих целях ?
     
  5. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    а ты знаешь, как его юзать?
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    PROFi
    Спасибо за ответ:)
    А как это спасает от описанных тобой выше зависаний?
    Это ты к чему? :) Я вообще в игрушки почти не играю)
    По-моему, у нас жабберы есть)
     
  7. 4VR

    4VR New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2008
    Сообщения:
    25
    Нужно потратить время и разобраться.
     
  8. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    Четкая регистрация входа и выхода из функции которую вызвали (не только мы) и через мьютекс или как то еще запретить нам вызывать функцию если она вызвана - в целом что-то можно придумать.
     
  9. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    какой, по-твоему, наиболее простой и удобный способ это сделать?
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    инжектнуться то? NtCreateThread + CsrCreateRemoteThread