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

Discussion in 'WASM.NT.KERNEL' started by PROFi, Oct 12, 2007.

  1. PROFi

    PROFi New Member

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

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

    asd New Member

    Blog Posts:
    0
    Joined:
    Mar 12, 2005
    Messages:
    952
    Location:
    Russia
    PROFi
    А что должно произойти? У меня ничего не случилось.
     
  3. t00x

    t00x New Member

    Blog Posts:
    0
    Joined:
    Feb 15, 2007
    Messages:
    1,921
    PROFi
    под старое железо тестить?
     
  4. rmn

    rmn Well-Known Member

    Blog Posts:
    0
    Joined:
    Nov 23, 2004
    Messages:
    2,347
    PROFi
    при запуске пишет ERROR и больше ничего не происходит
    xp sp1
     
  5. PROFi

    PROFi New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2003
    Messages:
    690
    asd
    t00x
    rmn
    А забыл нужно еще DBGVIEW.EXE Марка Руссиновича запускать, чтобы было понятно почему ERROR, при запуске stealth.sys
     
  6. t00x

    t00x New Member

    Blog Posts:
    0
    Joined:
    Feb 15, 2007
    Messages:
    1,921
    PROFi
    картинка появилась и система (6600 GT, ForceWare 94.24, XP SP2) повисла,
    драйвер только чуть нагрузил процессор (еле слышно вентилятор).

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

    MegaI2 Евген

    Blog Posts:
    0
    Joined:
    Sep 15, 2007
    Messages:
    17
    Location:
    Рязань
    да что должно произойти ?
     
  8. PROFi

    PROFi New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2003
    Messages:
    690
    t00x

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

    PS: my wife
     
  9. SammIk

    SammIk Member

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

    t00x New Member

    Blog Posts:
    0
    Joined:
    Feb 15, 2007
    Messages:
    1,921
    понял минут через 5 после поста :)
    а калькуляцию ) не смотрели?
     
  11. _BC_

    _BC_ БЦ

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

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

    PROFi New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2003
    Messages:
    690
    _BC_

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

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

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


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


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

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

    _BC_ БЦ

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

    PROFi New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2003
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Jul 13, 2003
    Messages:
    690
    SammIk

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

    wasm_test wasm test user

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    кстати, тоже интерсуюсь вопросом сабжа (вывод на экран из режима ядра), тоже напоролся на это;
    не в курсе - это смещение (у меня оно 0x20000 кажется) одинаково для всех видеокарт или нет?
    хотя, по крайней мере, на моем компе реальном и на вмваре если считать что оно одинаково, то выводится и там и там нормально.

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

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

    PROFi New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2003
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    в висте много чего нет) я бы на нее даже рассчитывать не стал..

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

    PROFi New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2003
    Messages:
    690
    Great

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

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

    wasm_test wasm test user

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    это я уже понял.. к сожалению.
    пожалста) давно интересовался этой темой.. дико интересовало как работает livekd
    как с тобой можно связаться кроме как на форуме?) в принципе это интересно, интересуют подробности)