Какая функция ядра?

Тема в разделе "WASM.NT.KERNEL", создана пользователем _Stranger_, 7 июл 2010.

  1. _Stranger_

    _Stranger_ New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2010
    Сообщения:
    3
    Вопрос, может быть и глупый, но все же.
    Кто знает какая функция ядра вызывается при установке обоев рабочего стола? Я долго гуглил, но аналог SystemParametersInfo для ядра так и не нашел(((
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    NtUserSystemParametersInfo -> xxxSystemParametersInfo -> xxxSetDeskWallpaper -> xxxLoadDesktopWallpaper.
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    работа с win32k крайне непроста в ядре.
    если вкратце, то юзается коллбек в юзермод ClientLoadImage.
     
  4. _Stranger_

    _Stranger_ New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2010
    Сообщения:
    3
    Clerk
    Ни одной из этих функция я не нашел ни в WDK, ни в *.h файлах МАСМ32!
    Как же я смогу сбацать сплайсинг, если такой код уже не покатит:
    char *p = (char *)NtUserSystemParametersInfo;
    Помогите, кот шарит как выкрутиться?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    _Stranger_
    Есть методы иные чем поиск функции в экспорте и её патч. В экспорт вынесена небольшая часть функционала и немногие сервисы.
     
  6. wasm_test

    wasm_test wasm test user

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

    _Stranger_ New Member

    Публикаций:
    0
    Регистрация:
    26 июн 2010
    Сообщения:
    3
    Просто мне не приходят в голову другие идеи. Я прорабатывал два пути:
    1) Тот, что написал. Из драйвера запускаю код char *p = (char *)NtUserSystemParametersInfo; и радуюсь жизни, имея все, что нужно
    2) Из приложения, запускающего функцию вызываю GetProcAddress и передаю в драйвер через буфер. Все бы хорошо, но когда открываю Syser'ом ту область памяти, которую указывает GetProcAddress - ничего не нахожу, а любая запись по тому адресу, даже со сброшенным битом в регистре CR0 приводит к БСОДу. И это для обычной функции, которую находит GetProcAddres...

    Теперь я и не шарю как провести сплайсинг недокументированной функции... Подскажете ?