Хорошо, давайте разберем по пунктам: 1. Как найти динамически нужный номер сервиса в ntdll 2. Что такое ntdll 3. Что такое ядерный сервис 4. Как вызвать сервис с помощью int 02eh. Вопросы может для кого то и примитивные, но я с такими вещами еще не сталкивался
niro Ну, во-первых, я бы все же рекомендовал сначала ближе познакомиться с теорией, с более или менее внутренним устройством OS семейства NT. Позволю себе отправить тебя к нетленной книге Руссиновича. Теория без практитки, конечно, ничто, но и в практику лезть без теоритических знаний не стоит. Форумы это не то место, где будут подробно разъяснять азы. Так было и будет на всех форумах. Я в кратце поясню. В ядре существуют две заполненные таблицы которые суть просто массив указателей на разные ядерные функции. Такие функции обычно и называют ядерными сервисами. Из юзермода напрямую их вызвать нельзя, зато можно вызвать по номеру с помощью прерывания 0Eh. Номера разнятся в разных версиях системы. Ты приводил выше дизассемблированный код SendInput(), разберись с ним и поймешь, как происходит такой вызов. В ntdll таких примеров "тыща". Плохо. Плохо что пытаешься воять системные вещи не зная этого. Это библиотека dll. Она основная и грузится в АП всех запущенных процессов. Основная суть ее как раз-таки в том, чтобы обеспечить гибкий интерфейс доступа к ядерным сервисам. Загляни в какую-нибудь ее функцию, ты увидишь примерно то же самое, что и в SendInput(). В регистр eax загружается номер ядерного сервиса. Это почти всегда первая инструкция в коде функции, так что этот номер не составит труда выудить "на лету" даже без дизассемблера длин.
niro хью не отладчик. сперва выводите заголовок (не могу найти развернутого, потому смотрите какие ф кнопки сами), потом смотрите экспорт. жамкаете на нужной функции и попадаете в ее начало
hiew32 --> F8 Header --> F9 Export Сдается мне niro keybd_event-->SendInput-->eax=11F6 int 2Eh взял отсюда?