С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/120: Рейтинг темы: голосов - 120, средняя оценка - 4.91
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
1

Получить HWND окна

22.04.2015, 19:20. Показов 24491. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача такова - загрузить динамическую dll в чужое приложение и получить HWND окна в которое загрузится dll.
dll я загрузил, проверил месаджем, а как получить теперь HWND окна?
При атаче dll нам будет известно только hinstace, может как - нибудь можно узнать по ID процесса?
0
Лучшие ответы (1)
IT_Exp
Эксперт
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
Блог
22.04.2015, 19:20
Ответы с готовыми решениями:

Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно "А". Это окно создаёт новое недочернее окно "Б". Необходимо...

Получить hwnd окна
Допустим я нахожу hwnd главного окна по названию его класса HWND...

Получить hwnd окна в многопользовательской системе
В win 2003. Как получить Hwnd окна другого пользователя. Для своего рабочего стола понятно. А вот...

Получить HWND активного дочернего окна
Дайте минимальный проверочный код который даст HWND активного дочернего окна. Если кто-то скажет...

20
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
пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Windows.h>
 
bool __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, void* lpvReserved)
{
    if (fdwReason == 1)
    {
        MessageBoxA(NULL, "Injected", "Проверка", MB_ICONWARNING);
 
        while (1)
        {
            Sleep(1);
        }
    }
    return 0;
}
0
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
22.04.2015, 21:09 7
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
как получить название окна, в которое загрузится dll?
Бессмыслица. dll загружается не в окно, а в процесс. А у процесса
может быть несколько окон или вообще ни одного.
0
55 / 55 / 63
Регистрация: 18.03.2014
Сообщений: 386
22.04.2015, 21:09 8
Лучший ответ Сообщение было отмечено ДЕСАНТУРА как решение

Решение

Скорее всего dll загружается в активное окно, чтобы получить активное окно используй
C++
1
 HWND hWnd = GetForegroundWindow();
1
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 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
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
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
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
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
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
22.04.2015, 21:57 16
Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
1. загрузить в процесс(заранее зная что это окно) dll
Открываем процесс (OpenProcess), выделяем в нем память (VirtualAllocEx),
пишем туда путь к своей dll (WriteProcessMemory). Затем создаем в процессе
удаленный поток (CreateRemoteThread), в качестве точки входа указываем
адрес функции LoadLibrary, а в качестве аргумента - указатель на
выделенный блок. Получаем классический инжект по Рихтеру.

Цитата Сообщение от ДЕСАНТУРА Посмотреть сообщение
2. загруженная dll должна создать поинтер на девайс директ икса, проинициализировать интерфейс директ икса, чтобы инициализировать интерфейс, нужен hwnd текущего окна
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
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
20.05.2018, 22:36
Помогаю со студенческими работами здесь

Как получить HWND окна/процесса/консоли
Как получить HWND окна/процесса/консоли? мне надо для Shellexecute. Реализация в Dll #include...

Не могу получить HWND ресурсов диалогового окна
Помогите разобраться, создаю диалоговое окно после чего хочу получить хэндлы созданых ресурсов в...

Как получить HWND окна на панели задач по координатам мыши?
Как получить хэндл свернутого на панель задач окна, на которое наведена мышка?) Добавлено через...

Как получить HWND, созданного функцией CreateProcess, окна консоли
Есть обычное оконное прижоление на Win Api. В какой-то момент вызываю CreateProcessW и подсовываю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru