2013-05-18 2 views
0

Я хочу загрузить специальную dll без выполнения функции dllmain.Загрузить Dll без выполнения функции dllmain

Я думаю, установить точку останова в dllmain можно решить эту проблему.

Но я не знаю Как я могу это сделать?

Также я хочу, чтобы функция экспорта вызовов dll.

Я попытался использовать LoadLibraryEx с dont_resolve_dll_references, но возникает ошибка с вызовом функции dll.

Как я могу это решить? Пожалуйста, дайте мне свою идею.

Спасибо.

ответ

1

Ну как explained here:

Опциональная точка входа в библиотеку динамической компоновки (DLL). Когда система запускает или завершает процесс или поток, вызывает функцию входа для каждой загруженной DLL, используя первый поток процесса. Система также вызывает функцию точки входа для DLL, когда она загружается или выгружается с использованием функций LoadLibrary и FreeLibrary.

вызов функции DllMain обязателен (хотя реализация этой функции является необязательной), если вы используете стандартный способ загрузки и выполнения динамической библиотеки. Таким образом, нет официального способа сделать это.

+0

LoadLibrary (Ex) FreeLibrary ... –

+0

Ну, теперь я пытаюсь отлаживать одну программу с защитой dll. Поэтому я хочу передать функцию dllmain Guard на стандартный или нестандартный способ. – bTagTiger

1

Как объяснено в этом вопросе: Win32 API to enumerate dll export functions?

Вы можете использовать LoadLibraryEx с флагом DONT_RESOLVE_DLL_REFERENCES, хотя использование этого флага настоятельно не рекомендуется. Если это так, вам, вероятно, придется освобождать и перезагружать dll, если вы действительно хотите его использовать.

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

  • Нет связанных вопросов^_^