6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|
1 | |
Получить HWND окна22.04.2015, 19:20. Показов 24345. Ответов 20
Метки нет (Все метки)
Задача такова - загрузить динамическую dll в чужое приложение и получить HWND окна в которое загрузится dll.
dll я загрузил, проверил месаджем, а как получить теперь HWND окна? При атаче dll нам будет известно только hinstace, может как - нибудь можно узнать по ID процесса?
0
|
22.04.2015, 19:20 | |
Ответы с готовыми решениями:
20
Найти HWND окна, зная HWND окна, породившего его Получить hwnd окна Получить hwnd окна в многопользовательской системе Получить HWND активного дочернего окна |
55 / 55 / 63
Регистрация: 18.03.2014
Сообщений: 386
|
|
22.04.2015, 19:48 | 2 |
Можно узнать по имени окна и класса
1
|
2 / 2 / 0
Регистрация: 31.10.2013
Сообщений: 17
|
|
22.04.2015, 20:36 | 3 |
HWND hwnd = ::FindWindow(_T("тут название твоего окна"));
Добавлено через 22 минуты ааааа наврал!! HWND hwnd = ::FindWindow(NULL, _T("название окна"));
1
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|
22.04.2015, 20:39 [ТС] | 4 |
Спасибо, но теперь вытекает другая проблема - как получить название окна, в которое загрузится dll?
0
|
55 / 55 / 63
Регистрация: 18.03.2014
Сообщений: 386
|
|
22.04.2015, 21:01 | 5 |
Можно посмотреть код dll
0
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
||||||
22.04.2015, 21:04 [ТС] | 6 | |||||
пожалуйста
0
|
Ушел с форума
|
|
22.04.2015, 21:09 | 7 |
Бессмыслица. dll загружается не в окно, а в процесс. А у процесса
может быть несколько окон или вообще ни одного.
0
|
55 / 55 / 63
Регистрация: 18.03.2014
Сообщений: 386
|
||||||
22.04.2015, 21:09 | 8 | |||||
Сообщение было отмечено ДЕСАНТУРА как решение
Решение
Скорее всего dll загружается в активное окно, чтобы получить активное окно используй
1
|
Ушел с форума
|
|
22.04.2015, 21:09 | 9 |
Да, и еще MessageBox из DllMain+DLL_PROCESS_ATTACH легко
положит процесс (а в некоторых ситуациях и всю систему).
0
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|
22.04.2015, 21:12 [ТС] | 10 |
да нет процесс не положит - просто тормазнет весь процесс, пока я не нажму "ОК"
0
|
Ушел с форума
|
|
22.04.2015, 21:14 | 11 |
Только если в процесс уже загружена user32.dll и если
это не системный процесс типа winlogon.exe.
0
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|
22.04.2015, 21:23 [ТС] | 12 |
и если нет стримового обмена с сервером данными, нет у меня простое окно которое я же и создал для опытов, инфу прошу для благих целей и повышения опыта программирования
0
|
Ушел с форума
|
|
22.04.2015, 21:31 | 13 |
Вот тут не понял.
У DllMain есть ряд ограничений, которые нужно знать и строго соблюдать, иначе начнут всплывать такие баги, о которых мозг среднестатистического программиста даже в своих фантазиях не сможет придумать... Подробнее здесь: DllMain entry point https://msdn.microsoft.com/en-... 85%29.aspx Dynamic-Link Library Best Practices https://msdn.microsoft.com/en-... _practices FindWindow найдет окно. Только при чем тут dll тогда ?
1
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|
22.04.2015, 21:51 [ТС] | 14 |
хочу сделать так:
1. загрузить в процесс(заранее зная что это окно) dll 2. загруженная dll должна создать поинтер на девайс директ икса, проинициализировать интерфейс директ икса, чтобы инициализировать интерфейс, нужен hwnd текущего окна 3.нарисовать стредствами директ икса что - нибудь в этом окне
0
|
55 / 55 / 63
Регистрация: 18.03.2014
Сообщений: 386
|
|
22.04.2015, 21:55 | 15 |
Как получить hwnd текущего окна я уже писал, а с DirectX я не знаком)
1
|
Ушел с форума
|
|
22.04.2015, 21:57 | 16 |
Открываем процесс (OpenProcess), выделяем в нем память (VirtualAllocEx),
пишем туда путь к своей dll (WriteProcessMemory). Затем создаем в процессе удаленный поток (CreateRemoteThread), в качестве точки входа указываем адрес функции LoadLibrary, а в качестве аргумента - указатель на выделенный блок. Получаем классический инжект по Рихтеру. FindWindow, FindWindowEx, EnumWindows, EnumChildWindows... Способов тут куча.
1
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|
22.04.2015, 22:03 [ТС] | 17 |
да что ж Вы все не верно поняли меня, как инжектить я знаю, как инициализировать средства директ икса - знаю, я не знал просто как получить HWND текущего окна в которое я загружаю dll, Вы мне подсказали, Вам всем спасибо за советы!!!
0
|
55 / 55 / 63
Регистрация: 18.03.2014
Сообщений: 386
|
|
22.04.2015, 22:11 | 18 |
А для того, чтобы вы без труда могли определить HWND окна, у меня есть небольшая программка, она немного не доделана, но основную функцию выполняет)
EnumWindow.zip
1
|
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
|
|
23.04.2015, 08:19 [ТС] | 19 |
благодарю
0
|
14 / 20 / 14
Регистрация: 20.03.2018
Сообщений: 485
|
|
20.05.2018, 22:36 | 20 |
Какие то окна видит, какие то нет. То которое мне надо не увидела. DLL ошибки не выдает, но и HWND тоже не выдает хД, надо делать для таких инжекторов отдельные h библиотеки для всплывающего окна в котором инфу выдаст. Так вообще не понятно она робит или нет
0
|
20.05.2018, 22:36 | |
20.05.2018, 22:36 | |
Помогаю со студенческими работами здесь
20
Как получить HWND окна/процесса/консоли Не могу получить HWND ресурсов диалогового окна Как получить HWND окна на панели задач по координатам мыши? Как получить HWND, созданного функцией CreateProcess, окна консоли Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |