Сейчас на форуме: asfa, Rio (+5 невидимых)

 eXeL@B —› Вопросы новичков —› как выглядит статически прилинкованная dll в PE формате
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 января 2014 00:47
· Личное сообщение · #1

допустим во время компилирования мы указали, что exe будет статически прилинкован с какой-то нашей dll. случай с динамической линковкой как работает понятно, системный загрузчик при запуске exe проецирует куда-то в память нужные dll и правит IAT. а в случае со статической? мне кажется, что загрузчик проецирует ее всегда по статическому адресу, и в таком случае все call в программе можно делать без IAT, а по жестким адресам, я прав? это был первый вопрос. и второй: а можно ли как-то статически присобачить к уже скомпиленному екзешнику дллку? т.е имеется ввиду модифицирование самого .exe.
в принципе, если вы ответите о том, как устроена статическая линковка, то второй я смогу обдумать сам.




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

Создано: 01 января 2014 00:51
· Личное сообщение · #2

Если вопрос про статический lib, то...
Выглядит так же, как и объектники. Код пихается в секцию кода, данные в данные. И загрузчик в итоге никоим образом про неё не знает, получается 1 цельный файл.
Красиво не сделаешь, а хоть как-нибудь запихать можно. Вопрос-а зачем?

Если же вопрос про DLL, то нет разницы, как она слинкована, динамическое связывание или статическое.



Ранг: 431.7 (мудрец), 391thx
Активность: 0.730.32
Статус: Участник

Создано: 01 января 2014 02:56 · Поправил: dosprog
· Личное сообщение · #3

...статическая линковка DLL...
-- Видимо, подразумевается использование утилиты DLL2LIB ?...

...присобачить к уже скомпиленному екзешнику дллку?
-- Помнится, была такая утилита INJECTA (похоже,болгарская).

-- Добавлено о PEBundle --
Коллак'овские программки неплохи в своих ранних версиях. (См. PEBundle v.1.0b3 fixed - раритет).
)) Более поздними, похоже, умеет пользовваться только он сам. Глючат. ( PEBundle v.3.20 ).

| Сообщение посчитали полезным: sivorog

Ранг: 49.7 (посетитель), 19thx
Активность: 0.050
Статус: Участник

Создано: 01 января 2014 10:44 · Поправил: sivorog
· Личное сообщение · #4

также был PEBundle от разработчиков PECompact (Bitsum)
используется в некоторых кейгенах для прикрепления bassmod.dll

dosprog
судя по хелпу, так белорусская
спасибо за линки



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 января 2014 18:22
· Личное сообщение · #5

Archer, имеется ввиду DLL.
ну вот например если мы в MSVC++ компилим с опцией /MT, то размер exe увеличивается из-за чего? мне кажется, что необходимые ему dll статически линкуются с ним, таким образом у него теперь нет внешних зависимостей.
вот PEBundle в принципе интересно.
я хочу внедрить в произвольный exe произвольную dll, чтобы та смогла выполнить свой dllmain.
ну в общем алгоритм вижу такой: правим таблицу импорта у exe так, чтобы он теперь зависел от нашей dll. теперь загрузчик будет искать эту dll при запуске приложения. но чтобы не таскать ее каждый раз вместе с exe, мы с помощью техники, которая используется в PEBundle засунем dll внутрь. думаю должно сработать




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

Создано: 01 января 2014 19:03
· Личное сообщение · #6

/MT оперирует с lib, если что.
Если надо сбандлить длл с ехе, юзай готовые бандлеры типа виртуалбокса/мольбокса и тд, их полно.


 eXeL@B —› Вопросы новичков —› как выглядит статически прилинкованная dll в PE формате
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати