![]() |
eXeL@B —› Вопросы новичков —› как выглядит статически прилинкованная dll в PE формате |
Посл.ответ | Сообщение |
|
Создано: 01 января 2014 00:47 · Личное сообщение · #1 допустим во время компилирования мы указали, что exe будет статически прилинкован с какой-то нашей dll. случай с динамической линковкой как работает понятно, системный загрузчик при запуске exe проецирует куда-то в память нужные dll и правит IAT. а в случае со статической? мне кажется, что загрузчик проецирует ее всегда по статическому адресу, и в таком случае все call в программе можно делать без IAT, а по жестким адресам, я прав? это был первый вопрос. и второй: а можно ли как-то статически присобачить к уже скомпиленному екзешнику дллку? т.е имеется ввиду модифицирование самого .exe. в принципе, если вы ответите о том, как устроена статическая линковка, то второй я смогу обдумать сам. ![]() |
|
Создано: 01 января 2014 00:51 · Личное сообщение · #2 Если вопрос про статический lib, то... Выглядит так же, как и объектники. Код пихается в секцию кода, данные в данные. И загрузчик в итоге никоим образом про неё не знает, получается 1 цельный файл. Красиво не сделаешь, а хоть как-нибудь запихать можно. Вопрос-а зачем? Если же вопрос про DLL, то нет разницы, как она слинкована, динамическое связывание или статическое. ![]() |
|
Создано: 01 января 2014 02:56 · Поправил: dosprog · Личное сообщение · #3 ...статическая линковка DLL... -- Видимо, подразумевается использование утилиты ...присобачить к уже скомпиленному екзешнику дллку? -- Помнится, была такая утилита -- Добавлено о PEBundle -- Коллак'овские программки неплохи в своих ранних версиях. (См. )) Более поздними, похоже, умеет пользовваться только он сам. Глючат. ( ![]() |
|
Создано: 01 января 2014 10:44 · Поправил: sivorog · Личное сообщение · #4 |
|
Создано: 01 января 2014 18:22 · Личное сообщение · #5 Archer, имеется ввиду DLL. ну вот например если мы в MSVC++ компилим с опцией /MT, то размер exe увеличивается из-за чего? мне кажется, что необходимые ему dll статически линкуются с ним, таким образом у него теперь нет внешних зависимостей. вот PEBundle в принципе интересно. я хочу внедрить в произвольный exe произвольную dll, чтобы та смогла выполнить свой dllmain. ну в общем алгоритм вижу такой: правим таблицу импорта у exe так, чтобы он теперь зависел от нашей dll. теперь загрузчик будет искать эту dll при запуске приложения. но чтобы не таскать ее каждый раз вместе с exe, мы с помощью техники, которая используется в PEBundle засунем dll внутрь. думаю должно сработать ![]() |
|
Создано: 01 января 2014 19:03 · Личное сообщение · #6 |
![]() |
eXeL@B —› Вопросы новичков —› как выглядит статически прилинкованная dll в PE формате |
Эта тема закрыта. Ответы больше не принимаются. |