Протестите код

Тема в разделе "WASM.NT.KERNEL", создана пользователем PROFi, 12 окт 2007.

  1. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    (!!!НЕ ПОД ВИРТУАЛКОЙ!!!)), при этом верний левый кусок рабочего стола должен быть читым (без окон), поле запуска (прога будет ожидать события вывода на экран чего либо) щелкни правой кнопкой мыши на рабочем столе, чтобы Windа отобразила меню, или запусти калькулятор и т.п. (драйвер должен обучиться), затем если все пойдет нормально нажать F5 (прога в цикле ждет этой клавиши).
    Да основной размер в файле занимают ресурсы.

    Ссылка удалена
     
  2. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    PROFi
    А что должно произойти? У меня ничего не случилось.
     
  3. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    PROFi
    под старое железо тестить?
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    PROFi
    при запуске пишет ERROR и больше ничего не происходит
    xp sp1
     
  5. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    asd
    t00x
    rmn
    А забыл нужно еще DBGVIEW.EXE Марка Руссиновича запускать, чтобы было понятно почему ERROR, при запуске stealth.sys
     
  6. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    PROFi
    картинка появилась и система (6600 GT, ForceWare 94.24, XP SP2) повисла,
    драйвер только чуть нагрузил процессор (еле слышно вентилятор).

    P.S. работает.
     
  7. MegaI2

    MegaI2 Евген

    Публикаций:
    0
    Регистрация:
    15 сен 2007
    Сообщения:
    17
    Адрес:
    Рязань
    да что должно произойти ?
     
  8. PROFi

    PROFi New Member

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

    А картинка то из ЯДРА... Собственно можно выводить все что угодно, только вот со шрифтами не разобрался до конца, прийдется их выводить как картинку.

    PS: my wife
     
  9. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Картинка есть. Ati Radeon x300, w2k sp4.
    Не повисла, но мышь не шуршит. Вообще ввод блокируеться.
    после нажатия на ф5, все возвращаеться на круги своя(ввод).
    Выделенного не понял.
    Она сразу отобразила пикчу.
    А по Ф5 разблокировала ввод.
    --
    Или она просто не захотела у меня ничему обучаться??? Обидно...
     
  10. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    понял минут через 5 после поста :)
    а калькуляцию ) не смотрели?
     
  11. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    "это не наш метод".
    Поиск, перехват и использование Drv* и Eng*-функций -- это конечно рабочий вариант для ring0-графики, но он слишком сильно зависит от ОС. Соответственно обломать отладчик, который будет их использовать, можно множеством способов. Посмотри на свой драйвер, чего там только нет -- чтение реестра, сигнатурный поиск (таблицы функций) в памяти display-драйвера, вызовы Eng* и Drv*-функций, и тд и тп. Всё это можно обломать почти на каждом этапе. И ладно бы если это всё требовалось только на стадии инициализации, но оно нужно и во время работы, от той же EngLockSurface ты точно никуда не денешься. ;)

    Скорее всего что-то подобное как раз и используется в Syser'е, т.е. опредеденная работа с Drv* и Eng*. Потенциальное слабое место для антиотладки.
     
  12. PROFi

    PROFi New Member

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

    Хм.. Интересно.. Про поиск и перехват - я пользую стек, и возможности стека только на 50%. Т.е. это только вершина айсберга.

    Дальше имя драйвера оно не нужно, это осталось из исследования, но шифрование никто не отменял.

    EngLockSurface ты точно никуда не денешься - да, не думаю, здесь она только пользуется для демонстрации вывода, а в дальнейшем пользовать ее можно только один раз (ну ест-но если на некоторых карточках в полноэкранный "DOS" не пререходить). DrvCopyBits - вот ключ, но попробуй ее найти ...


    Скорее всего что-то подобное как раз и используется в Syser'е,
    да только Syser в ауте при выводе на экран в XP + GeForce 8800.


    Все, большое спасибо всем, просьба не распространять, поскольку это только часть технологии.

    PS: Удалил ссылку, очень большая просьба закрыть топик.
     
  13. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    да ладно тебе, там ничего секретного нет. ;) Тебе по-хорошему нужен вариант, в котором ОС/драйвера нужны только в момент "взлета", т.е. чтобы после получения всей нужной инфы, адресов и тд на этапе загрузки, в рабочем режиме уже ничего осезависимого для вывода графики не требовалось.
     
  14. PROFi

    PROFi New Member

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

    и тд на этапе загрузки.

    Никакого этапа загрузки, запустил драйвер в любой момент, и все ... Это только часть технологии...

    да ладно тебе, там ничего секретного нет. ;) -

    хоть одну ссылочку. Тогда будем что-то обсуждать.

    История развития вопроса:

    1) PCI конфигурационная область, там базовый адрес видеопамяти, мепируем-выводим
    Но, теперь то что выводится на экран начинается не посмещению 0, кроме того видепамять нелинейна.
    2) IOCTL_VIDEO_MAP_VIDEOMEMORY или IOCTL_VIDEO_SHARE_... Тоже в ауте, поскольку хоть и память мепируется, но толку от этого мало. (там типа cancel.sys и др. попытки)
    3) Siwvid.sys - перехват точек входа видеодрайвера в виде jmp xxx, где xxx адрес внутри Siwvid.sys, но учитывать, то что теперь текстового режима вывода инфы уже нет (он эмулируется) и видеодрайвер не отключается + память нелинейна => перехват бесполезен.
    4) Syser.sys (не совсем он, а syserboot.sys помоему) но не суть важно, перехватывает саму таблицу вызовов и мняет адреса уже в ней, но технологи полностью содрана с Siwvid.sys (плагиат однако) => перехват тоже бесполезен.

    5) А вот в Vista все подругому, и Syser по идее должен работать, хотя Aero вырубать будет это точно, но эти парни слабовато (халявно, без спин блокировок) реализовали перехваты на многопроцессорной машине (про программирование APIC я вообще умолчу), короче если дело обстоит так же как и в XP версии, то долго такой отладчик существовать не будет даже на двухядернике, не говоря уже о 4х ядернике.
     
  15. PROFi

    PROFi New Member

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

    Все имеено должно быть так как ты и описал. Обучение нужно для вывода а экран.
     
  16. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    кстати, тоже интерсуюсь вопросом сабжа (вывод на экран из режима ядра), тоже напоролся на это;
    не в курсе - это смещение (у меня оно 0x20000 кажется) одинаково для всех видеокарт или нет?
    хотя, по крайней мере, на моем компе реальном и на вмваре если считать что оно одинаково, то выводится и там и там нормально.

    одним PCI conf space не обойтись - нужно же знать разрешение экрана. кроме IOCTL_QUERY_CURRENT_MODE или как её там я хз какие еще варианты узнать разрешение.

    насчет нелинейности - как тупой вариант: можно из юзермода записать пиксели все, а из дрова смотреть в каких кусках видеобуффера какие пиксели оказались.. но это уж накрайняк=)
     
  17. PROFi

    PROFi New Member

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

    не в курсе - это смещение (у меня оно 0x20000 кажется) одинаково для всех видеокарт или нет?
    Нет.


    В Viste IOCTL_QUERY_CURRENT_MODE - нет :) Но разрешение узнать можно и без IOCTL вообще. PS: а кто мешает пользовать регистры CRT (Video), но есть способы проще.

    насчет нелинейности - как тупой вариант: можно из юзермода записать пиксели все, а из дрова смотреть в каких кусках видеобуффера какие пиксели оказались.. но это уж накрайняк=)

    Ответ отрицательный, причина в том что отобразится может около 256 Мб видеопамяти, а остальная зависит от окна (PCI-e) заданного в BIOS. Память распределяется не CPU а GPU.

    Над Vistoй сейчас работаю, но думаю это реально..
     
  18. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    в висте много чего нет) я бы на нее даже рассчитывать не стал..

    а от чего зависит не в курсе? или это такая индивидуальная особенность, которая не рассчитывается.. например, как физ адрес проекции видеобуффера в RAM
     
  19. PROFi

    PROFi New Member

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

    В курсе:
    1) От оверлея (он с любого адреса видеопамяти). - главная проблема Syser - не выводит на оверлейную поверхность
    2) В DirectDraw есть такой метод Flip, он меняет базовый адрес вывода на экран и при следующем выводе уже другая картинка.
    3) Direct3D каждая поверхность созданная может быть выведена на экран сразу, а не копируя байты в первичную поверхность.
    4) адрес проекции видеобуффера Такого не существует на современных видеокарточках. В них весь экран поделен на прямоугольники и вовод (причем pitch тоже может менятся) осуществляется в них.

    PS: Спасибо за DMP, столько времени сэкономил.
    PS1: Как предложение о создании своего отладчика ?
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    это я уже понял.. к сожалению.
    пожалста) давно интересовался этой темой.. дико интересовало как работает livekd
    как с тобой можно связаться кроме как на форуме?) в принципе это интересно, интересуют подробности)