Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Перехват вызовов Win32 API фукнций под Windows 95/98/NT

Перехват вызовов Win32 API фукнций под Windows 95/98/NT

В этой статье я попробую описать метод исследования программ, которые я бы назвал "нежным" в отличие от "жестких" методов, описанных ранее и включающих изменение используемых программой модулей.



Вы, конечно, увидели простой MessageBox (нажмите на Cancel). Теперь закроем NOTEPAD, пойдем в поддиректорию "GentleHack_9xRelease" и запустим там "samp1.exe". Должен снова запуститься NOTEPAD. Наберем, снова, несколько символов в NOTEPAD и опять Alt-F4.


"... It's a kind of magic..."

Теперь, собственно, разберемся, что же случилось? А случилось вот что: только что вызов функции MessageBoxW() был перехвачен программой samp1.exe и выдает что-то странное. Как это произошло? Все довольно просто. Обратите внимание на поддиректорию "GentleHack_9xRelease". Там находяться следующие файлы: samp1_inj.dll
syringe.dll
samp1.exe
Что это? samp1.exe - это некая программа, которая инициализирует процессe "заражения" samp1_inj.dll - это, собственно, "зараза", некий код, который встраивается в NOTEPAD.EXE (или еще что-нибудь) syringe.dll - это шприц, которым вся эта "зараза" будет впрыснута в NOTEPAD.EXE. А как это происходит?

Посмотрим в samp1samp1.cpp. samp1 запускает NOTEPAD.EXE с флагом CREATE_SUSPENDED, а затем делает: ... !InjectModule( ProcessInformation.hProcess, ProcessInformation.hThread, szDllToInject, "HackMessageBox", NULL, 0, (void**)&uResult, INFINITE ) /*!InjectModule*/ ... Собственно, это и есть АКТ, после которого NOTEPAD.EXE подхватывает "заразу". Эта фукнция определена в syringe.dll и позволяет в любой процесс впрыснуть некую DLL и запустить в этой DLL некую функцию (в данном случае DLL - это samp1_inj.dll, а функция - "HackMessageBox").
Посмотрим samp1_injsamp1_ing.cpp. "HackedMessageBoxA" и "HackedMessageBoxW", это то, во что превращается MessageBox. Обратите внимание на структуру TInjectInfo, в ней содержатся необходимые описатели и могут быть переданы параметры (смотрите "GentleHack_9xsyringesyringe.h").

Данный пример перехватывает только вызовы к DLL, которые уже загружены программой к моменту запуска. Но кто мешает перехватить CreateProcess и/или LoadLibrary и заражать позднее загружаемые DLL? Данный пример не любит компиляций samp1.exe и samp1_inj.exe с BoundsChecker'ом. Ну это ясно почему. Модификация данного примера для "заражения" уже загруженой программы (для Windows NT) - Данный пример позволяет изменить поведение для некой конкретной программы и на некое определенное время. В следующей статье я опишу syringe.dll и приведу ее исходный текст. Дополнительные примеры Вы найдете на OK Thinking Software Web Page или на OK Thinking Software Web Page (mirror)

P.S. Эти материалы публикуются ТОЛЬКО в целях обучения. Автор не несет никакой ответственности за любой ущерб, нанесенный в результате использования информации и/или инструментов, представленных здесь.

P.P.S. Коллеги! Давайте уважать друг друга и не мучить "братьев наших меньших"...

Good Luck...



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте