2015-10-28 2 views
-1

Я из Linux и хочу реализовать принятое решение в Change the Title Bar of a Windows Executable на платформе Windows.Создание DLL для перехвата названия изменения

Я только сейчас создал DLL с помощью msdn walkthrough

Я просто хочу исполняемый, чтобы загрузить мою DLL без восстановления исполняемого файла. Я понимаю, мне нужен Implicit Linking. Но я смущен о том, что упоминается here. Поскольку исполняемому файлу не нужно будет вызывать какие-либо функции из DLL, напротив, DLL попытается перехватить сообщения заголовка изменений.

Какую настройку я должен выбрать, чтобы разрешить неявное связывание и загрузку этой DLL в этом случае?

+0

Почему вы не делаете то, что описано в этом ответе? –

+0

@DavidHeffernan Нет. Я не думаю, что это описано там. После этого я приступлю к кодированию перехвата WM_SETTEXT и т. Д. – user5858

+0

Я хочу спросить, почему вы не знаете, что ответ рекомендует вам? –

ответ

0

Раньше был раздел реестра AppInit_DLLs, в котором перечислены библиотеки DLL, которые будут автоматически загружены в каждый процесс. Поскольку Windows Vista теперь требует некоторых трудностей для удовлетворения требований безопасности, которые кажутся излишними.

Итак, следующим простым способом было бы использовать SetWindowsHooxEx - вы создали бы отдельное приложение, которое будет отслеживать создание окна в поисках целевого окна приложений. Когда он найдет это, он зацепит его, что будет иметь двойное преимущество, фактически перехватывая вызовы WM_SETTEXT, и переносит вашу ловушку dll в целевой процесс.

Это предполагает, что целевой процесс сам по себе не повышен.

+0

Вот почему я выбрал метод DLL – user5858

0

Для человека, который только что вышел из Linux в Windows, это тяжелая нагрузка, подлежащая пониманию. Но, если вам удастся понять, что такое dll, hook, windows, HWND, оконные сообщения (WM_) и т. Д., Попробуйте прочитать эту статью, чтобы улучшить вашу DLL, чтобы выполнить работу по подключению, заблокировать сообщения WM_SETTEXT в «Windows» и вызвать SetWindowText Three Ways to Inject Your Code into Another Process. Обратите внимание, что большинство антивирусных программ не любят подключать приложения.

Кстати, по какой причине вы пытаетесь это сделать?

Если вы просто делаете это для удовольствия, а затем забыть подсечки, попробуйте перечисляя окно с помощью EnumWindows или использовать FindWindowEx(), а затем просто SendMessage() или PostMessage() с WM_SETTEXT к HWND, чтобы установить название нужного окна (Нет цели для него, просто прикольно и обучение).

Смежные вопросы