· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Windows hooks for code injection за и против.

Посл.отвђт Сообщенiе


Дата: Авг 11, 2003 14:35:07 · Поправил: rst

Вопрос об инжектировании кода в "чужой" процесс.
На winnt вопрос решается с любым процессом ( на который есть права ) через CreateRemoteThread. На Win9X такой радости нет. Но есть вроде бы то, что может работать везде - а именно хуки (но с лимитацией - GUI apps only). Правильны ли мои утверждения :
1) делаем dll которая будет работать с хуками.
2) SetWindowsHookEx
3) SendMessage окну того приложения где нужно выполнить код.
Как я понял хук будет вызываться в контексте приложения окну которого было отослано сообщение. Так ли это?


Дата: Авг 11, 2003 18:14:11

3) SendMessage окну того приложения где нужно выполнить код.
Как я понял хук будет вызываться в контексте приложения окну которого было отослано сообщение. Так ли это?


Нет, не так. После установки хука на любой процесс, к которому этот хук прицепится, будет мапиться код длл, а уже этот код сможет обмениваться с приложением, поставившим хук. Вроде понятно?


Дата: Авг 11, 2003 19:15:52

А если я ставлю хуки на все окна? system-wide они называются если не ошибаюсь.
где-то нарыл пример использования хуков ( свое в лом писать было )
и там воткнул строчку:
//pseudo-code
GetModuelFileName (NULL,x);
MessageBoxA (x);
и получил что вызывается оно в контексте приложения которому принадлежит окно ( т.е. мне возвращался путь к экзешнику того приложения ) .
мне не нужно чтоб код обменивался с аппликухой, которая поставила хук. мне нужно, чтоб код мог работать внутри процесса, на который поставили хук. т.е. аналог CreateRemoteThread для win98 с лимитацией - GUI && CurrentDeskTop only.


Дата: Авг 11, 2003 19:32:06

Опять велосипед изобретаем? ApiHooks либу by Elicz смотри.


Дата: Авг 11, 2003 19:37:37 · Поправил: masquer

Он и так работает ВНУТРИ ПРОЦЕССА. Ты ж сам пример привел. Или где?


Дата: Авг 13, 2003 19:55:05

[ rst: 3) SendMessage окну того приложения где нужно выполнить код.
Как я понял хук будет вызываться в контексте приложения окну которого было отослано сообщение. Так ли это?
]

Да. masquer ввел тебя в заблуждение, видимо не верно поняв вопрос. А Dr.Golova верно говорит.


Дата: Авг 14, 2003 12:32:12 · Поправил: masquer

Хм, Four-F, а где именно я ввел в заблуждение? Может так оно и есть - и я неверно понял вопрос. Рясу и пепел для посыпания головы уже приготовил :)


Дата: Авг 14, 2003 13:32:13

[ masquer: ...а где именно я ввел в заблуждение? ]

rst спросил: "Как я понял хук будет вызываться в контексте приложения окну которого было отослано сообщение. Так ли это?"

masquer ответил: "Нет, не так."

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


Дата: Авг 14, 2003 14:09:13

Ага, понятно. Виноват, фраза "нет, не так" не нужна была, осталось только добавить, что idHook должен быть WH_GETMESSAGE, например.


Дата: Авг 14, 2003 15:09:30

Хм тогда вопрос такой:
в MSDN написано. что в SetWindowsHookEx можно так же передать вместо hModule для dllки ещё и ThreadID где хук живет - как я понял в этом случае не будет загрузки и выполнения кода в контексте чужого процесса, а в контексте процесса вызвавшего SetWindowsHook, а конкретно в том потоке, который он указал. Пральна?


Дата: Авг 14, 2003 17:23:56

Да. Только некоторые типы хуков не могут быть thread-specific, например WH_KEYBOARD_LL.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.072