Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.26;
Скачать: CL | DM;

Вниз

Слеить EXE и DLL   Найти похожие ветки 

 
Adventure   (2008-09-01 15:19) [0]

Написана программа с использованием чужой (свободного распространения) DLL.
Можно ли как-то склеить (внедрить) Dll в exe-ик, что бы не таскать за прогой лишние файлы?


 
Сергей М. ©   (2008-09-01 15:21) [1]

Можно.
Но не нужно.
И даже вредно.


 
Adventure ©   (2008-09-01 15:24) [2]


> Можно.
> Но не нужно.
> И даже вредно.
>


Это серьезно или забыл смайлик поставить?


 
Сергей М. ©   (2008-09-01 15:26) [3]

Абсолютно серьезно.


 
evvcom ©   (2008-09-01 15:26) [4]

а dll не лишний файл. Запакуй зипом или раром, будет тебе 1 файл для переноски :)


 
Юрий Зотов ©   (2008-09-01 15:28) [5]

1. Если файл программой используется, то он не лишний.

2. Нет ничего особенного в том, что программа состоит не из одного файла. Большинство программ именно такие и есть.

3. Если внедрить DLL в EXE, то объем окажется больше суммарного из-за дополнительного кода по загрузке и выгрузке этой псевдоDLL.

4. Зачем искать самому себе проблемы?


 
Adventure ©   (2008-09-01 15:35) [6]

Спасибо!


 
Anatoly Podgoretsky ©   (2008-09-01 16:13) [7]

> Adventure  (01.09.2008 15:19:00)  [0]

Так он же ничего не весит, он в электронах.


 
Vlad Oshin ©   (2008-09-01 16:32) [8]

как это ничего?
9,1093826(16)х10−31 кг
и это только один и только в состоянии покоя, а они же беспокойные и их .. МНОГО.


 
Anatoly Podgoretsky ©   (2008-09-01 16:51) [9]

Информация не материальна.


 
DrPass ©   (2008-09-01 17:39) [10]


> Anatoly Podgoretsky ©   (01.09.08 16:51) [9]
> Информация не материальна.

Природа информации двойственна


 
oldman ©   (2008-09-01 18:21) [11]


> Adventure   (01.09.08 15:19)  
> что бы не таскать за прогой лишние файлы?


Разберем два варианта:
1. Программа работала, но ни одну функцию из длл не использовала.
2. Все функции прикомпилированы в ехе.

Ресурсов не жалко?
Как ты думаешь, почему все нормальные проги таскают за собой "ненужные" длл?


 
Тыщ ©   (2008-09-01 18:57) [12]

Если неплохо разбираться в принципах загрузчика и в формате PE,
можно объединить .exe и .dll так, чтоб не приходилось ничего загружать и выгружать,
и притом сэкономить место (на релокации из .dll) и слегка уменьшить время загрузки.

Нужно перебазировать .dll, чтоб ее виртуальный адрес шел сразу за .exe,
объединить секции и директории .exe и .dll,
подставить на место импорта .exe адреса функций из .dll,
и если у .dll есть точка входа, вызвать ее перед загрузкой и перед вызовом ExitProcess.

В общем, исполнить функцию динамического линковщика системы.

Я развлекался так, делал (у меня была .dll на С++ и .exe на Delphi),
но потом нашлись исходники .dll и я прилинковал код к .exe без подобных ухищрений.


 
Anatoly Podgoretsky ©   (2008-09-01 19:40) [13]

> DrPass  (01.09.2008 17:39:10)  [10]

Все ничто по сравнению с DM


 
Renegat ©   (2008-09-01 20:04) [14]

> [12] Тыщ ©   (01.09.08 18:57)

А не проще ли выяснить, какая часть кода DLL задействована в программе, отдебажить DLL и выдрать из неё этот код в отдельный OBJ-файл, линкуемый затем к проге? Правда, вызовы придётся делать по адресам, а не по именам, ну да это не столь серьёзная проблема.


 
Тыщ ©   (2008-09-01 20:44) [15]

Renegat ©   (01.09.08 20:04) [14]

Код может быть неслабо заплетен, тем более, в моем случае он весь  был полезным.
А также мое решение может быть автоматизировано.


 
evvcom ©   (2008-09-02 08:31) [16]

Ну и нафига все это? В чем преимущество перед обычным использованием dll?


 
wl ©   (2008-09-02 13:24) [17]

это умеют делать разного рода протекторы, например themida.
бывают ли бесплатные, не знаю


 
ketmar ©   (2008-09-02 20:42) [18]

>[12] Тыщ © (2008-09-01 18:57:00)
угу. а также не забывать эмулировать кучу API-функций. начиная от перекрытия CreateThread (никто не забыл, что она вызывает процедуру инициализации DLL?), ExitThread, etc и заканчивая элементарными функциями для работы с ресурсами.

в принципе, ноги тоже можно пришить к ушам и ходить, двигая ноги при помощи рук, да.

---
Do what thou wilt shall be the whole of the Law.


 
Городской Шаман   (2008-09-02 22:05) [19]

советую глянуть сюда
http://www.joachim-bauch.de/tutorials/load_dll_memory.html
и сюда
http://www.joachim-bauch.de/tutorials/load_dll_memory.html/en/talkback/1114525465
, но работает оно не всегда и не всегда корректно.



Страницы: 1 вся ветка

Текущий архив: 2008.10.26;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
2-1221625602
Ivanov Ivan
2008-09-17 08:26
2008.10.26
Индекс строки ListView


3-1208388143
Maxim
2008-04-17 03:22
2008.10.26
Обработчик кнопки в WebSnap


15-1220190358
Синий Дракон
2008-08-31 17:45
2008.10.26
Логическая задача


2-1221651678
zabgar
2008-09-17 15:41
2008.10.26
Как работать с Access


2-1221740702
Cosinus
2008-09-18 16:25
2008.10.26
Как запретить показ системного меню?