информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медГде водятся OGRыАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
?? 20.03.02 16:43  Число просмотров: 1068
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
<programming>
[win32] w2k, setwindowshookex(wh_keyboard..). сбрасывающийся хук. 20.03.02 10:38  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
Система - Win2000.
MSVC 6.0, pure API.
Имеется exe с экспортом функции keyproc для "захучивания" клавиатуры.
Т.е. он себя же использует как dll одновременно.
Для отладки загоняю в keyproc MessageBox.
Запускаем прогу. Давим на клавиши - все ОК. m-box-ы появляются.
Как только пробуем нажать что-нибудь в другом окне(активизируем другое), хук слетает.
И все... безвозвратно..........

(Хук устанавливается ВСЕГДА нормально)

В чем может быть дело???

http://www.uinc.ru/forum
Забыл добавить еще кое-что. 20.03.02 11:03  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
> Система - Win2000.
> MSVC 6.0, pure API.
> Имеется exe с экспортом функции keyproc для "захучивания"
> клавиатуры.
> Т.е. он себя же использует как dll одновременно.
> Для отладки загоняю в keyproc MessageBox.
> Запускаем прогу. Давим на клавиши - все ОК. m-box-ы
> появляются.
> Как только пробуем нажать что-нибудь в другом
> окне(активизируем другое), хук слетает.
> И все... безвозвратно..........
>
> (Хук устанавливается ВСЕГДА нормально)
>
> В чем может быть дело???


Забыл добавить еще кое-что.

- Под Win95 все отлично работает.
- После сброса хука процесс остается работать.
- "Лишних" UnHook-ов нет.
- И с LoadLibrary, GetProcAddr, SetWindowsHookEx все в порядке.
- В SetWindowsHookEx предедаю по хендлу "dll" - (..,hLib,NULL)


http://www.uinc.ru/forum
?? 20.03.02 16:43  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
?? 21.03.02 00:43  
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
Давно на старом форуме этот вопрос обсуждался, что хук всегда должен быть в DLL (активное участие в обсуждении принимала irka)
Чтобы хук работал в чужом процессе, винда должна спроецировать DLL с хуком в этот чужой процесс, а если хук не в DLL, то она просто не сможет этого сделать.
Можно попробовать придать .exe-шнику вид .dll: переключить 1 бит в PE-заголовке (file is DLL) и WinMain подправить, чтобы пределять, вызвана ли WinMain в результате запуска .exe или загрузки/выгрузки .dll. Еще у LibMain и WinMain разное число параметров, так что при возврате из LibMain/WinMain положено снимать со стека разное число двойных слов.
А вообще непонятно, почему в Win95 это работает...
?? №2 21.03.02 11:29  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
> Можно попробовать придать .exe-шнику вид .dll: переключить
> 1 бит в PE-заголовке (file is DLL) и WinMain подправить,

Ну есть просто хеадер подправить, но загрузщик в Win2k скажет что это не EXE (или что-то в этом роде).


> чтобы пределять, вызвана ли WinMain в результате запуска
> .exe или загрузки/выгрузки .dll. Еще у LibMain и WinMain
> разное число параметров, так что при возврате из
> LibMain/WinMain положено снимать со стека разное число
> двойных слов.

Да, это мысль.

> А вообще непонятно, почему в Win95 это работает...

А мне вообще не до конца ясноконкретнаяпричина необходимости быть хук-коду в DLL. Разве нельзя настроить сегменты в EXE так, чтобы он так же нормально проецировался на процессы? Ну если дело в DllEntryPoint, то почему же в 9x пашет?
Че-то я запутался...
?? №2 21.03.02 22:33  
Автор: Biasha <Бяша> Статус: Member
<"чистая" ссылка>
> > А вообще непонятно, почему в Win95 это работает...
Не понятно...

> А мне вообще не до конца ясноконкретнаяпричина
> необходимости быть хук-коду в DLL. Разве нельзя настроить
> сегменты в EXE так, чтобы он так же нормально проецировался
> на процессы? Ну если дело в DllEntryPoint, то почему же в
> 9x пашет?
> Че-то я запутался...
Причина быть в dll понятна - как можно загрузить процесс в процесс. Хотя, конечно можно и загрузить, но зачем MS лишняя морока.
Короче не морочь голову себе - обработчик хука должен быть в dll там его и помести.
Ну это все понятно. Вот если бы кто рассказал подробно процесс весь - какую послед. действий делает загрузщик (на низком уровне - т.е. что за флаги проверяет, в какой момент выделяет память в процессе под dll, когда релоки пересчитывает и т.д.) 22.03.02 10:41  
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach