@Qreen
Разъяренный питонист

Как работают dll файлы?

Нет осознания работы dll файлов. Я понял, что dll - это практически те же exe, т.е. PE файлы. Только вот в чем их отличие? И, раз это те же исполняемые файлы, можно ли сделать в начале, допустим, jmp my_function в самой dll при её импорте? Или же функции должны вызываться только из программы, которая импортирует dll? Каким вообще образом происходит импорт?
  • Вопрос задан
  • 1480 просмотров
Решения вопроса 2
vabka
@vabka
Токсичный шарпист
Только вот в чем их отличие?

У них нет точки входа, так что их нельзя просто взять и запустить - это раз.

Два - под .dll может прятаться сборка .NET, а не классический бинарник.

И, раз это те же исполняемые файлы, можно ли сделать в начале, допустим, jmp my_function в самой dll при её импорте?

Нельзя, тк это не исполняемые файлы, а набор функций.

Каким вообще образом происходит импорт?

Динамическое связывание
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Читайте для прояснения: https://docs.microsoft.com/en-us/windows/win32/api...
При загрузке dll функцией LoadLibrary вызывается функция DllMain, которая может присутствовать в dll. Она же вызывается и в других случаях. Из этой функции вы уже можете вызывать другие функции внутри dll.
Если же вам просто нужно вызвать какую-то функцию dll, например, из командной строки, без программирования, то смотрите ответ Константин Цветков
DLL то же исполняемый файл, в том смысле, что внутри содержится исполняемый код. Но DLL отличаются от EXE и их нельзя запустить непосредственно. Нужен посредник (EXE), который прямо или косвенно будет импортировать функции DLL и вызывать их. Rundll.exe является "универсальным" посредником, но он, конечно, далеко не универсальный, его можно использовать только в простых случаях..
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы