Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизИ снова перехват АПИ Найти похожие ветки
← →
Samael6 © (2004-02-04 16:39) [0]Доброго времени суток, господа программисты!
У меня такая проблема: нужно перехватывать ф-цию WinAPI Gethostbyname(). Нашел море информации, но она либо плохо иллюстрирована примерами, либо эти примеры просто не работают. Не могу разобраться. Если кто имеет какую инфу или примеры, не подкините ли. Желательно чтоб работало на максимальном количестве версий Мастдаек.
Заранее очень благодарен!
← →
Digitman © (2004-02-04 16:50) [1]
> нужно перехватывать ф-цию WinAPI Gethostbyname()
глобально ? или в контексте конкретно указанного процесса ?
← →
Samael6 © (2004-02-04 17:00) [2]Глобально
← →
Samael6 © (2004-02-04 17:11) [3]Но в крайнем случае, можно и в указанном процессе.
← →
Digitman © (2004-02-04 17:15) [4]глобально для GUI-процессов установи глоб.хук (SetWindowsHookEx), он внедрит в каждый работающий GUI-процесс по экземпляру твоей хук-DLL, в ходе инициализации которой собственно и перехватываешь нужный тебе экспорт-импорт
глобально для произвольных процессов перечисли все процессы, стартуй в их контексте удаленный код.поток (CreateRemoteThread), в контексте которого также перехватываешь нужный тебе экспорт-импорт
верно для любой эксп.ф-ции
← →
Digitman © (2004-02-04 17:16) [5]а если пояснишь, с какой целью требуется перехват, то может и иное решение найдется ... может и перехват не нужен вовсе
← →
Samael6 © (2004-02-04 17:18) [6]А нет ли работающего примера? Или по-подробнее не расскажите как это все реализуется?
← →
Samael6 © (2004-02-04 17:23) [7]Мне нужно фильтровать возвращаемые этой процедурой IP адресса из моей программы. Сразу оговорюсь, что это не для трояна, не для вируса и разной пакости, просто у меня программа с такими вот экзотическими функциямию. Что вроде гибрида DNS и фаервола.
← →
Digitman © (2004-02-04 17:44) [8]
> нет ли работающего примера?
как ты себе это видишь ? если и есть, то вокруг собственно перехвата - большущая технологическая оболочка под конкретную конечную задачу, ты в ней мало что поймешь и забросаешь меня вопросами, мол, это зачем, это почему ... да и не десяток строк в таких примерах
думаю, гораздо важней понять концептуально, в какой последовательности реализуются и задействуются те или иные механизмы (а их немало) для достижения такой цели
> по-подробнее не расскажите как это все реализуется?
что ? конкретно ?
внедрение в чужой процесс ? установка глоб.хука ? или что ? до собственно перехвата нужно проделать кучу различных необходимых действий, чтобы код перехвата перед его стартом оказался в ВАП того процесса, чьи обращения к интересующей эксп.ф-ции требуется отслеживать ..
← →
Samael6 © (2004-02-04 17:59) [9]Я делаю так:
- Ищу в таблице импорта(экспорта) библиотеки WSOCK32 свою функцию
- Меняю ее на свою, путем замены указателя в таблице первичного адресса на свой. И вроде все. При этом снимаю защиту от записи с этого участка памяти, после чего ставлю наместо.
И в моей проги, которая все это делает, все вроде работает. Но из тестовой другой, все равно вызывается "родная" ф-ция.
Вот поэтому я и спрашиваю. Не знаю что сделал не так.
← →
Digitman © (2004-02-04 18:12) [10]
> Но из тестовой другой, все равно вызывается "родная" ф-ция
разумеется ! там другой экз-р wsock32 и соответственно другие, нетронутые тобой настроенные секции экспорта/импорта
в общем случае тебе требуется тем или иным образом внедрить код, реализующий то что ты уже умеешь, в ВАП "чужого" процесса и запустить его там на выполнение
в частном случае (win9x) можно обойтись и без внедрения, но это из области трюков, поэтому не рекомендую
методы же внедрения - различны, два из них я тебе их перечислил в [4] ... частные случаи внедрения не рассматриваю как не универсальные для любого "чужого" процесса
выбирай на вкус
← →
Digitman © (2004-02-04 18:16) [11]кр.того, если речь идет о перехвате ф-ций, реализующих логику GetHostByName-подобную, ты не учитываешь, что есть еще и асинхр. ее вариант - WSAAsyncGetHostByname .. многие прикладные и системные процессы могут использовать именно ее вместо синхронной GetHostByName
← →
Samael6 © (2004-02-04 18:40) [12]Спасибо за разъеснение. Попробую разобраться. А какого типа хук лучше всего подойдет для поставленной задачи?
← →
Digitman © (2004-02-05 08:35) [13]
> Samael6
> какого типа хук лучше всего подойдет для поставленной задачи?
любого. это абсолютно неважно.
важно, что когда при установке тобой хука система будет грузить хук-DLL в АП "чужого" GUI-процесса, код инициализации этой DLL получит управление, и в этот момент ты будешь иметь возможност выполнить все что угодно, в т.ч. и перехват импорта/экспорта
← →
Nous Mellon © (2004-02-05 14:52) [14]Спасибо большое Digitman! Благодаря вам я теперь разобрался в механизме перехвата ф-ций АПИ.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.049 c