Текущий архив: 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