Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте www.za4et.net.ru

Компьютеры, Программирование Компьютеры, Программирование     Программное обеспечение Программное обеспечение

Перехват API-функций в Windows NT/2000/XP

Браслет светоотражающий, самофиксирующийся, желтый.
Изготовлены из влагостойкого и грязестойкого материала, сохраняющего свои свойства в любых погодных условиях. Легкость крепления позволяет
66 руб
Раздел: Прочее
Мыло металлическое "Ликвидатор".
Мыло для рук «Ликвидатор» уничтожает стойкие и трудно выводимые запахи за счёт особой реакции металла с вызывающими их элементами.
197 руб
Раздел: Ванная
Горшок торфяной для цветов.
Рекомендуются для выращивания крупной рассады различных овощных и цветочных, а также для укоренения саженцев декоративных, плодовых и
7 руб
Раздел: Горшки, ящики для рассады

Тихомиров В.А. Системные программисты, работавшие под MS DOS, прекрасно помнят технологию перехвата системных прерываний, позволявшую брать под контроль практически все процессы, проходившие в любимой операционной системе. С переходом на Wi dows использование системных ресурсов программистами в большом объеме стало осуществляться через функции API, и у многих «сиспрогов» стал возникать вопрос: «существуют ли в Wi dows технологии перехватов этих системных функций?» Особый интерес это вызывает применительно к высокозащищенным ОС, выполненным на ядре . Данная статья подробнейшим образом, с действующими примерами покажет практическую реализацию такой технологии (предполагается, что читатель знаком с принципами системного программирования в Wi dows и умеет применять в своей работе Visual C ). Что такое «перехват API-функций» Перехват системной функции API заключается в изменении некоторого адреса в памяти процесса или некоторого кода в теле функции таким образом, чтобы при вызове этой самой API-функции управление передавалось не ей, а вашей функции, подменяющей системную. Эта функция, работая вместо системной, выполняет какие-то запланированные вами действия, и затем, в зависимости от вашего желания, либо вызывает оригинальную функцию, либо не вызывает ее вообще. Перехват функций является очень полезным средством в том случае, если вы хотите отследить, изменить или заблокировать некоторые конкретные действия приложения. Перехват функций чужого процесса удобнее всего осуществлять внедрением собственной DLL с функцией-двойником в адресное пространство того процесса, контроль над функциями API которого вы хотите установить. При написании двойников функций следует особое внимание обратить на соглашения о вызовах функций cdecl и s dcall. В cdecl функциях подразумевается, что параметры кладутся в стек справа налево, и вызывающая функция очищает стек от аргументов. В s dcall функциях подразумевается, что параметры кладутся в стек справа налево, но стек от аргументов очищает вызываемая функция. Кроме того, следует учитывать, что в Wi dows API многие функции встречается в 2-х экземплярах: A SI и U ICODE. Первые обозначаются суффиксом A: например MessageBoxA, вторые – суффиксом W – например MessageBoxW. Рассмотрим два метода перехвата API функций: Непосредственная запись в код функции. Подмена адреса функции в таблице импорта. Метод 1. Перехват API непосредственной записью в код системной функции. Прием заключается в том, чтобы в начало перехватываемой функции записать команду jmp ваша функция двойник или эквивалентную ей. Затираемые байты желательно где-нибудь сохранить. После вызова исправленной функции приложением управление будет передано вашей функции. Она должна корректно обработать стек, то есть извлечь переданные ей параметры и произвести необходимые вам действия. Затем, если вы собираетесь вызывать оригинальную функцию, необходимо восстановить затертые байты в начале оригинальной функции. Вызвать ее, передав ей все необходимые параметры. После возврата из оригинальной функции, необходимо снова в начало кода функции записать команду перехода на вашу функцию.

Вернуть управление вызвавшей программе. Достоинство данного метода состоит в том, что он позволяет перехватывать любые функции, а не только те, которые указаны в таблице импорта. Недостаток: в многопоточных приложениях может возникнуть такая ситуация, когда один поток вызвал перехваченную вами функцию, управление было передано функции-двойнику, она восстановила оригинальное начало функции, но в этот момент параллельно выполняющийся поток произвел вызов той же функции. В результате управление будет передано сразу оригинальной функции, минуя вашу :(. Разберем пример программы (в виде DLL-файла), перехватывающей функцию MessageBoxA методом 1. Для работы нам потребуются следующие заголовочные файлы: #i clude "s dafx.h" #i clude "i ercp .h" Далее подготовим структуру, содержащую код дальнего перехода на нашу функцию-двойник. Практика показала, что вместо обычного jmp лучше применять комбинацию push xxxxxxxx re где хххххххх – это адрес функции-двойника. В результате структура, которая будет хранить нужный код перехода, выглядит так: s ruc jmp far {  BY E i s r push; //здесь будет код инструкции push  DWORD arg;  //аргумент push  BY E i s r re ; //здесь будет код инструкции re }; Зададим нужные переменные: BY E old; //область для хранения 6-ти затираемых байт начала функции DWORD adr MessageBoxA //будущий адрес оригинальной функции DWORD wri e ; //вспомогательная переменная jmp far jump; //здесь будет машинный код инструкции перехода Главная функция DLL будет выглядеть следующим образом: BOOL APIE RY DllMai ( HA DLE hModule, DWORD ul reaso for call,    LPVOID lpReserved ) { // Если система подключает DLL к какому-либо процессу, // она сначала вызовет главную функцию DLL с параметром // DLL PROCESS A ACH, на что мы сразу вызовем нашу функцию // I ercep Fu c io s, которая произведет подмену стандартной API функции // MessageBoxA нашей функцией I ercep MessageBoxA (см. ниже)  if(ul reaso for call = = DLL PROCESS A ACH )  {  I ercep Fu c io s();  }  re ur RUE; } Функция, которую мы только что вызвали и которая выполняет основную хитрость, перехват API перезаписью начальных байт стандартной функции, выглядит следующим образом: void I ercep Fu c io s(void) {  DWORD op;  //сначала получим абсолютный адрес функции для перехвата  adr MessageBoxA =    "MessageBoxA");  if(adr MessageBoxA == 0)  {  MessageBox( ULL, "Ca ` ge adr MessageBoxA, "Error!", 0);  re ur ;  }  // Зададим машинный код инструкции перехода, который затем впишем  // в начало полученного адреса:  jump.i s r push = 0x68;  jump.arg = (DWORD)&I ercep MessageBoxA;  jump.i s r re = 0xC3;  //Прочитаем и сохраним первые оригинальные 6 байт стандартной API функции  ReadProcessMemory(Ge Curre Process(),(void ) adr MessageBoxA,    (void )&old, 6, &wri e ); //Запишем команду перехода на нашу функцию поверх этих 6-ти байт Wri eProcessMemory(Ge Curre Process(), (void )adr MessageBoxA,  (void )&jump, sizeof(jmp far), &wri e ); } Теперь посмотрим, как выглядит сама функция-двойник. Она должна заменить стандартную MessageBoxA, поэтому её тип и состав параметров должны точно соответствовать оригиналу: //данное определение аналогично sr dcall BOOL WI API I ercep MessageBoxA(HW D hw d, char ex , char hdr, UI u ype) {  //Сначала восстанавливаем 6 первых байт функции.

Это не обязательное  // действие, просто мы решили подшутить над пользователем, и все  // сообщения функции MessageBoxA переделать на свои, поэтому нам придется  // вызвать оригинальную функцию, а для этого следует восстановить ее адрес:  Wri eProcessMemory(Ge Curre Process(), (void )adr MessageBoxA,    (void )&old, 6, &wri e );  //Здесь вы можете порезвиться от души и выполнить любые, пришедшие вам  // в голову действия. Мы просто заменили сообщение функции на свое:  char s r = "Hi From MessageBOX!!!!";  //Вызываем оригинальную функцию через указатель  ((BOOL ( s dcall )(HW D, char , char , UI ))adr MessageBoxA)(hw d,   s r, hdr, u ype);  //Снова заменяем 6 байт функции на команду перехода на нашу функцию  Wri eProcessMemory(Ge Curre Process(), (void )adr MessageBoxA,    (void )&jump, 6,&wri e );  re ur RUE; } Если откомпилировать этот код как DLL, то получим файл, который в дальнейшем (см.ниже) следует внедрить в процесс, в котором мы хотим перехватить API MessageBoxA. Метод 2. Перехват API через таблицу импорта. Прием заключается в замене адреса функции в таблице импорта на адрес функции-двойника. Для понимания данного метода потребуется знание формата PE исполняемых файлов Wi dows. Как известно, большинство приложений вызывает функции из dll через таблицу импорта, представляющую собой после загрузки exe файла в память списки адресов функций, импортируемых из различных Dll. Откомпилированный вызов функции через таблицу импорта выглядит следующим образом: Call dword p r или что-то наподобие. Здесь address of fu c io – адрес в таблице импорта, по которому находится адрес вызываемой функции. (Тем, кто не знаком со структурой PE заголовка EXE файла, рекомендуем заглянуть в Интернет за соответствующей информацией.) При перехвате API через таблицу импорта надо: найти в таблице импорта элемент IMAGE IMPOR DESCRIP OR, соответствующий той DLL, из которой импортирована функция; узнать адрес перехватываемой функции при помощи Ge ProcAddress; перебирая элементы массива, на который указывает поле Firs hu k, найти адрес перехватываемой функции; запомнить этот адрес где-нибудь и записать на его место адрес функции-двойника. Теперь при вызове подмененной функции вначале будет вызываться функция-двойник. После этого она может вызвать (или не вызывать) оригинальную функцию. Достоинство данного метода в том, что он будет корректно работать в многопоточном приложении, когда несколько потоков одновременно вызывают подмененную функцию. Так же данный метод будет работать в ОС WI DOWS 9.x. Недостаток – не все функции вызываются через таблицу импорта. Ниже приведен пример программы, аналогичной приведенной выше, но использующей второй метод перехвата функции: DWORD adr MessageBoxA; BOOL APIE RY DllMai (HA DLE hModule, DWORD ul reaso for call,    LPVOID lpReserved) {  if(ul reaso for call == DLL PROCESS A ACH)  I ercep Fu c io s();  re ur RUE; } // Эта функция ищет в таблице импорта - .ida a нужный адрес и меняет на // адрес процедуры-двойника void I ercep Fu c io s(void) {  // Начало отображения в памяти процесса  BY E pimage = (BY E )Ge ModuleHa dle( ULL);  BY E pida a;  // Стандартные структуры описания PE заголовка  IMAGE DOS HEADER idh;  IMAGE OP IO AL HEADER ioh;  IMAGE SEC IO HEADER ish;  IMAGE IMPOR DESCRIP OR iid;  DWORD isd; //image hu k da a dword  // Получаем указатели на стандартные структуры данных PE заголовка  idh = (IMAGE DOS HEADER )pimage;  ioh = (IMAGE OP IO AL HEADER )(pimage idh->e lfa ew       4 sizeof(IMAGE FILE HEADER));  ish = (IMAGE SEC IO HEADER )((BY E )ioh sizeof(IMAGE OP IO AL HEADER));  //если не обнаружен магический код, то у этой программы нет PE заголовка  if (idh->e magic != 0x5A4D)  {  MessageBox( ULL, " o exe hdr", "Error!", 0);  re ur ;  }  //ищем секцию .i

Для каждого открытого раздела реестра диспетчер конфигурации создает блок управления разделом. B таком блоке хранится полный путь раздела, индекс ячейки узла раздела, к которому относится данный блок, и флаг, уведомляющий диспетчер конфигурации, надо ли удалять ячейку раздела (на которую ссылается данный блок) после закрытия последнего описателя раздела. Windows помещает все блоки управления разделами в хэш-таблицу, что обеспечивает быстрый поиск нужного блока по имени. Объекты «раздел реестра» указывают на соответствующие блоки управления, и, если два приложения открывают один и тот же раздел реестра, каждое получает свой объект, указывающий на общий блок управления. Приложение, открывая существующий раздел реестра, начинает с того, что сообщает его имя API-функции реестра, которая вызывает процедуру разбора имени, принадлежащую диспетчеру объектов. Найдя нужный объект «раздел реестра» в пространстве имен диспетчера конфигурации, диспетчер объектов возвращает ему полученный путь. Диспетчер конфигурации, используя структуры данных куста, содержащиеся в памяти, ищет указанный раздел среди всех разделов и подразделов

1. Сравнение операционных систем /DOS, Windows 3.*, Windows 95, Windows NT/

2. Служба удаленного доступа (RAS) Windows NT

3. Windows NT - ОС нового поколения

4. Построение локальной вычислительной сети подразделения организации под управлением операционной системы Windows NT

5. Методы перехвата API-вызовов в Win32

6. Операционные системы Unix и Windows NT
7. Анализ системы безопасности Microsoft Windows 2000 Advanced Server и стратегий ее использования
8. Инсталляция Windows XP. Конфигурирование оболочки Windows XP, оптимизация работы

9. Windows 2000

10. Коммуникационные функции в Windows for workgroups

11. Типовые задачи администрирования сети Windows 2000

12. Настройка файла подкачки для оптимизации Windows XP

13. Windows XP

14. Знакомство с Windows XP

15. Используем удаленный рабочий стол в Windows XP

16. Проблемы со вторым сервис-паком для Windows XP

Сменный фильтр "Барьер-6", 3 штуки.
Сменная кассета Барьер-6 «для жесткой воды» благодаря повышенному содержанию ионообменной смолы более эффективно снижает жесткость
741 руб
Раздел: Фильтры для воды
Машина-каталка "Авторалли", цвет: синий.
С такой каталкой, которая очень похожа на автомобиль марки BMW, любой ребенок почувствует себя участником соревнований по авторалли.
1073 руб
Раздел: Каталки
Супер концентрированный гель для стирки белья Lion Essence "Впечатление", 900 мл.
Суперконцентрированный гель обеспечивает безупречное качество стирки, великолепно отстирывает даже самые сложные пятна. Придает вещам
315 руб
Раздел: Гели, концентраты

17. Тонкая настройка Windows Firewall в Windows XP SP2

18. Windows XP Service Pack 2: пакет обновлений или новая ОС?

19. Системные службы Windows XP

20. Секреты управления системой Windows XP с помощью реестра и стандартных средств

21. Возможности Windows XP Professional

22. Операционная система Windows XP
23. Разработка программного приложения с использованием интерфейса Windows API
24. Функции управления реестром Windows

25. Дослідження порушень репродуктивної функції населення Рівненської області у післяаварійний період (2000-2007 рр.)

26. Функции белков в организмах живых существ

27. Синапсы (строение, структура, функции)

28. Строение и функции клетки

29. Слуховой анализатор. Строение и функции сердца

30. Расходы и доходы бюджета РФ 2000-2001гг.

31. Сущность, функции и классификация налогов

32. Задачи, система и функции органов юстиции Российской Федерации

Кондитерский шприц с насадками "Mayer & Boch" (15 предметов).
Кондитерский шприц - это легкое и простое в использовании приспособление для рисования кремом или шоколадом. С его помощью можно легко
556 руб
Раздел: Кондитерские принадлежности
Кролик "Bunnies" с магнитами, 9,5 см.
Симпатичные кролики приглашают вас весело провести время! Благодаря магнитным свойствам вы можете комбинировать их по-разному. Материал:
386 руб
Раздел: Дикие животные
Глобус "Двойная карта" диаметром 320 мм, с подсветкой.
Диаметр: 320 мм. Масштаб: 1:40000000. Материал подставки: пластик. Цвет подставки: черный. Мощность: 220 V, может использоваться в
1141 руб
Раздел: Глобусы

33. Задачи, основные функции и система ОВД

34. Функции и штаты Олонецкого губернского правления в 1825 – 1918 гг.

35. Парламент Великобритании и его основные характеристики. Функции палат

36. Экономические функции государства. Государственное регулирование экономики

37. Уголовное преследование как функция государства

38. Отчет по учебно-ознакомительной практике (c правовыми основами местного самоуправления, формированием представительных и исполнительных органов власти, структурой и функциями органов местного самоуправления)
39. Налоги: их сущность, виды и функции
40. Структура налоговых органов РФ права, обязанности и функции

41. Возникновение и развитие, понятие и признаки права. Понятие правосознания, основные функции, виды

42. Понятие, классификация и содержание основных функций государства

43. Функции государства

44. Феодальное государство (экономическая основа, сущность, механизм, функции и формы)

45. Структура и функции государственного аппарата

46. Деньги и их функции(MONEY)

47. Культура, её структура и функции

48. Культура как социальное явление. Ее основные функции

Ночник с датчиком движения "Ночной снайпер".
Маленький ночник с датчиком движения "Ночной снайпер" надежно крепится на крышку унитаза и срабатывает только при вашем
648 руб
Раздел: Ночники
Рюкзак школьный "Ever After High. Dragon Game".
Рюкзак школьный - легкий и яркий рюкзак для ученицы начальной школы. Прочная каркасная конструкция хорошо сохраняет форму, устойчиво стоит
2451 руб
Раздел: Без наполнения
Пакеты фасовочные "Paclan", 26x35 см, 1000 штук.
Производятся из пищевого полиэтилена и безвредны для человека. Сохраняют свежесть продуктов. Пакеты выпускаются разного размера, что
305 руб
Раздел: Пакеты для продуктов

49. Функции культуры

50. Поэзия природы: средства изобразительности и функции

51. Типы и функции обращений в лирике А. Блока

52. Синтаксические функции герундия в испанском языке. Проблема атрибутивного герундия

53. Новейшая мировая история. Периодизация 1945-2000

54. Netscape Navigator для Windows`95. Обзор возможностей
55. Организация Linux - сервера для Windows клиентов
56. Создание клиентских частей SQL БД под ОС Windows`95 и WindowsNT

57. Получение уравнения переходного процесса по передаточной функции

58. Проблема 2000 года и ее последствия

59. Хэш-функции в криптосистемах

60. Использование макросов в MS Access 2000

61. Билеты по Windows и Word

62. Общая характеристика системы Windows

63. Операционная система Windows

64. WINDOWS - средства для создания презентаций

Подставка для ванны "Мишка", антискользящая, цвет: бежевый.
Подставка для ног предназначена для того, чтобы помочь малышу самостоятельно садиться на унитаз или пользоваться умывальником. Небольшой
353 руб
Раздел: Подставки под ноги
Магнитная доска для фото, с маркером, 30x48 см.
Классический вариант магнитной доски найдет свое место в любом доме. Подойдет для игр и обучения, для крепления заметок и для надписей.
447 руб
Раздел: Прочие
Мультиплеер "Антошка".
Супермодный плеер для малышей "Антошка" в оригинальном дизайне! В нем собрано 15 популярных песенок и 5 любимых сказок. Бонус!
344 руб
Раздел: Смартфоны, мультиплееры

65. Практика оператора (WINDOWS 95, MICROSOFT WORD 97, MATHCAD, ЯЗЫКИ ПРОГРАММИРОВАНИЯ, ЭЛЕКТРОННЫЕ КНИГИ, VISIO, Norton Utilites 3.0 for Windows 95)

66. Архиваторы для Windows 9x

67. Общие свойства приложений Office Pro 2000

68. Отчет по практическим занятиям по курсу прикладные задачи программирования на тему Windows, Microsoft Word и Microsoft Excel

69. Анализ криптостойкости методов защиты информации в операционных системах Microsoft Window 9x

70. Power Point 2000
Power Point 2000
71. Сравнение операционных систем: Linux и Windows
72. Мастер функций в Excel

73. Средства мультимедиа в Windows Millenium Edition

74. Исследование наилучших приближений непрерывных периодических функций тригонометрическими полиномами

75. Экстремумы функций многих переменных

76. Эквивалентность пяти классов функций элементарных по Кальмару

77. Свойства усредненной функции с сильной осцилляцией

78. Дзета-функция Римана

79. Рекурсивные функции

80. Теория неявных функций и ее приложения

Набор насадок для кондитерского мешка BE-0389/4 "Webber", 4 штуки.
Размеры: Ø3,5х2,5х4 см. Набор кондитерских насадок открывает невообразимое число возможностей сделать десерт роскошным и неповторимым
307 руб
Раздел: Кондитерские принадлежности
Фляга "S.Quire 1406YX-3", 0,18 л, сталь (цвет: серебристый с рисунком).
Очень строгий, классический, элегантный подарок для мужчины. Металлическая фляга "S.Quire", выполнена из нержавеющей стали,
773 руб
Раздел: Фляжки сувенирные
Пенал большой "Pixie Crew" с силиконовой панелью для картинок (розовый, цветной горох).
Повседневные вещи кажутся скучными и однотонными, а тебе хочется выглядеть стильно и быть не как все? "Pixie Crew" сделает твою
1402 руб
Раздел: Без наполнения

81. Иммунная система. Строение, состав, функции и др.

82. Надпочечники и их физиологическая функция

83. Мышцы: начало, место прикрепления, функция

84. О некоторых показателях опорной функции стопы у детей

85. Понятие и характер нотариальных функций

86. Экологические функции правоохранительных органов
87. Уголовно-исполнительное право в системе права, его предмет, функции и система
88. Влияние искусственно вносимой соли NaF на накопление фтора в почве и разнотравье луга (Word`2000)

89. Решение экологических проблем в г. Москве в 2000 году

90. Дидактические функции проверки и учета знаний и умений, учащихся по физике

91. Изучение функций в школьном курсе математики VII-VIII классов

92. Применение избирательных технологий на выборах в Пермскую городскую Думу 2000 года: технологичность выборов

93. Внешняя политика Финляндии 1945-2000 гг.

94. Проектирование станочного приспособления для операции "Сверление" детали "Вал" (WinWord 2000 & CorelDraw 9.0)

95. Эмоции: функции и особенности их проявления

96. ВЕДУЩИЕ ФУНКЦИИ И СТРУКТУРА ПРОЦЕССА ОБУЧЕНИЯ

Настольная игра "Волшебник Изумрудного города".
Семейная игра для 2-6 игроков. Участники помогают Элли и ее друзьям добраться до Изумрудного города, для этого они выполняют разные
1490 руб
Раздел: Классические игры
Глобус Земли, физико-политический, с подсветкой, 320 мм, арт. К013200101.
Глобус Земли физико-политический, с подсветкой, работает от сети. Диаметр: 320 мм. На пластиковой подставке. Не рельефный. Цвет подставки
1331 руб
Раздел: Глобусы
Рюкзак школьный "Multi Pack mini. Грация", 27х17х36 см.
Рюкзак подойдет для школьников начальной школы. Надежная каркасная конструкция защищает содержимое рюкзака от повреждений. Рюкзак разделен
2451 руб
Раздел: Без наполнения

97. Что такое конфликт? Природа, типы и функции

98. Религия и её функции

99. Комплексная механизация откормочной фермы КРС на 2000 голов


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.