Прототип функции SetForegroundWindow

Тема в разделе "WASM.BEGINNERS", создана пользователем niro, 3 ноя 2009.

  1. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Да у куда подробней-то?
     
  2. niro

    niro New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    35
    Хорошо, давайте разберем по пунктам:

    1. Как найти динамически нужный номер сервиса в ntdll
    2. Что такое ntdll
    3. Что такое ядерный сервис
    4. Как вызвать сервис с помощью int 02eh.

    Вопросы может для кого то и примитивные, но я с такими вещами еще не сталкивался :dntknw:
     
  3. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    niro
    Ну, во-первых, я бы все же рекомендовал сначала ближе познакомиться с теорией, с более или менее внутренним устройством OS семейства NT. Позволю себе отправить тебя к нетленной книге Руссиновича. Теория без практитки, конечно, ничто, но и в практику лезть без теоритических знаний не стоит. Форумы это не то место, где будут подробно разъяснять азы. Так было и будет на всех форумах.

    Я в кратце поясню.

    В ядре существуют две заполненные таблицы которые суть просто массив указателей на разные ядерные функции. Такие функции обычно и называют ядерными сервисами. Из юзермода напрямую их вызвать нельзя, зато можно вызвать по номеру с помощью прерывания 0Eh. Номера разнятся в разных версиях системы. Ты приводил выше дизассемблированный код SendInput(), разберись с ним и поймешь, как происходит такой вызов. В ntdll таких примеров "тыща".

    Плохо. Плохо что пытаешься воять системные вещи не зная этого. Это библиотека dll. Она основная и грузится в АП всех запущенных процессов. Основная суть ее как раз-таки в том, чтобы обеспечить гибкий интерфейс доступа к ядерным сервисам. Загляни в какую-нибудь ее функцию, ты увидишь примерно то же самое, что и в SendInput(). В регистр eax загружается номер ядерного сервиса. Это почти всегда первая инструкция в коде функции, так что этот номер не составит труда выудить "на лету" даже без дизассемблера длин.
     
  4. niro

    niro New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    35
    Cпасибо за информацию, все же придётся покопаться в теории.
     
  5. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    niro
    хью не отладчик. сперва выводите заголовок (не могу найти развернутого, потому смотрите какие ф кнопки сами), потом смотрите экспорт. жамкаете на нужной функции и попадаете в ее начало
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    hiew32 --> F8 Header --> F9 Export
    Сдается мне niro keybd_event-->SendInput-->eax=11F6 int 2Eh взял отсюда?