Сейчас на форуме: tyns777 (+4 невидимых)

 eXeL@B —› Программирование —› LoadLibrary в начале. DllMain по завершению программы.
Посл.ответ Сообщение

Ранг: 39.6 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 10 мая 2010 09:08
· Личное сообщение · #1

Всем привет!! С прошедшим праздником!

Имеем приложение на Delphi. При запуске появляется окошко с RichEdit.
Задача: узнать HWnd этого RichEdit.

Для решение такой задачи я модифицировал приложение так, чтобы при вызове FormCreate (0x00464818) загружалось моя библиотека hookle.dll (0x004657A5). При этом должна вызываться функция DllMain из моей библиотеки.
НО... DllMain вызывается после закрытии формы (окна).

Вопрос: Как заставить DllMain вызываться сразу после LoadLibrary?

Саму библиотеку загружает успешно (EAX!=0, ERROR_SUCCESS).
Библиотека написана на C с использованием компилятора MinGW.
Все, что имеется - прикреплено ниже.

6209_09.05.2010_CRACKLAB.rU.tgz - 011.rar




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 10 мая 2010 10:15
· Личное сообщение · #2

Накой тебе DllMain после LoadLibrary, если она вызывается во время LoadLibrary? Без вызова точки входа либа не загружается, ищи косяк.



Ранг: 39.6 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 10 мая 2010 10:25 · Поправил: Bonez92
· Личное сообщение · #3

Archer пишет:
Накой тебе DllMain после LoadLibrary, если она вызывается во время LoadLibrary?

Не понял вопрос. Проблема в том, что DllMain во время LoadLibrary не вызывается.

Archer пишет:
Без вызова точки входа либа не загружается

Хм... А как dll загрузился тогда? В памяти Оля видит это библиотеку без проблем. При ошибке LoadLibrary должна возвращять NULL, но в моем случае возвращает не NULL.



Ранг: 129.7 (ветеран), 2thx
Активность: 0.070
Статус: Участник

Создано: 10 мая 2010 10:29
· Личное сообщение · #4

А поясни сакральный смысл загрузки библиотеки?
Хэндл окна можно получить кучей менее геморных способов



Ранг: 39.6 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 10 мая 2010 10:32
· Личное сообщение · #5

Проблема решена. Думал во время загрузки оля откликнется на бряк в DllMain. Поставил MessageBeep(MB_OK) на DllMain и убедился что DllMain вызывается.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 10 мая 2010 10:33
· Личное сообщение · #6

Если длл загрузилась, ты прозевал выполнение точки входа. От кода возврата, который вернёт точка входа, зависит успешность загрузки длл. Она не может не вызываться.


 eXeL@B —› Программирование —› LoadLibrary в начале. DllMain по завершению программы.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати