| | | | |
Полный текст материала
Другие публикации автора: Дмитрий Мозулёв
Цитата или краткий комментарий: «... Как программно распаковывать *.rar архивы ...» |
Важно:- Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
- Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
- При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
- Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.
Добавить свое мнение.
| | Содержит полезные и(или) интересные сведения | [1] | 5 | 45.5% | | | | Ничего особенно нового и интересного | [2] | 5 | 45.5% | | | | Написано неверно (обязательно укажите почему) | [3] | 1 | 9.1% | | Всего проголосовали: 11 | | | Все понятно, материал читается легко | [1] | 3 | 30% | | | | Есть неясности в изложении | [2] | 2 | 20% | | | | Непонятно написано, трудно читается | [3] | 5 | 50% | | Всего проголосовали: 10 |
[Использование и создание DLL] [Архивация (алгоритмы сжатия)]
Отслеживать это обсуждение
Всего сообщений: 3902-07-2008 05:22CooP:
И не нужно удалять мои сообщения, это прям не по-интернетски как-то...
На данном сайте есть определённые требования к культуре общения. Ваши сообщения удалёются не за то, какое мнение насчёт Delphi вы высказываете, а за то, какие речевые обороты вы используете.
Вообще не понимаю, с чего вы, Geo и "Дмитрий Мозулев", воспринимаете меня как недоразвитого?
Ну, "доразвитые" - они понимают, что на странице, отведённой под обсуждение конкретной статьи, надо писать своё мнение о конкретной статье, а не о Delphi вообще.
|
|
02-07-2008 04:39>>> Можно описать его словами, более подробно, чем вы это только что сделали.
Пожалуйста. Запускаете процесс распаковки с первым из предполагаемых паролей и смотрите, распакуется или вылетит по ошибке. Если вылетел по ошибке, запускаете со вторым паролем. Ну и так далее. Думаю, штук тысячу паролей Вы за час проверить сможете :D |
|
02-07-2008 04:33сообщение от автора материала >CooP
вам знакомо понятие "игровой движок". Ну или любой другой движок?
Ну слышали про какой-нибудь UnrealEngine наверное.
Так вот. В недрах каждого из подобных движков зарыты мегабайты рутинного, сложного и отлаженного кода. Задайте себе вопрос и постарайтесь на него ответить: "Зачем тратят сотни тысяч долларов на библиотеки (движки), изучают их годами... когда можно без особых проблем написать своё; DirectX и OpenGL - открытые и хорошо документированные API."
К нашему (вашему) разговору это имеет такое отношение... что Delphi - это не только язык программирования, это ещё хороший движок Windows-приложений. Использовать его/не использовать - дело Ваше. Но проявите уважение, не обсуждайте данный вопрос в комментариях к моей статье.
Советую завести отдельную ветку на форуме или ознакомиться с существующим множеством веток "Delphi VS C++" в Сети. |
|
02-07-2008 01:30>>> простой давно известный брутфорс, словарь - текстовый файл с предполагаемыми паролями
Вы исходите из предположения, что во всех архиваторах пароль для архива где-то хранится и может быть проверен. Это верно для того же ZIP, но не так для RAR. В RAR пароль каким-то образом включен в алгоритм распаковки. То есть нельзя взять пароль и проверить, правильный он или нет. Нужно начать распакровку и ждать, возникнет CRC Error или не возникнет. Отсюда сложности с перебором паролей для RAR.
>>> Изучение Delphi, как и Builder`a (да и MFC сюда) означает для меня изучение огромной кучи чужого кода, которое в конечном итоге оказывается бесполезным без знания WinAPI
Во-первых, какая там куча кода?! Для меня Delphi -- это язык программирования. Как и в любом другом языке программирования, нужно знать основные принципы использования. Чужой код изучается по мере необходимости, если не знаешь, как реализовать какую-то конкретную вещь. Вещи, которые не нужны, можно не изучать.
А читать нужные разделы по WinAPI вообще никто не запрещает. |
|
02-07-2008 01:16Geo, ну вы блин, даёте!..
Задача эта пока не решена. А если нашелся гений, который ее решил, то навряд ли он выложит свое решение для свободного использования.
Хотя, может и я не совсем корректно выразился. Для меня "бодбор пароля по словарю" это простой давно известный брутфорс, словарь - текстовый файл с предполагаемыми паролями.
И пожалуйста, не нужно сравнивать С++ и Delphi. Как минимум Builder или pascal вместо одного из этих слов. "Учить" - это узнать достаточно глубоко для решения сложных вопросов. Изучение Delphi, как и Builder`a (да и MFC сюда) означает для меня изучение огромной кучи чужого кода, которое в конечном итоге оказывается бесполезным без знания WinAPI. Но это всё, видимо, здесь обсуждать не к месту.
В общем, мне просто нужен исходный код "брутфорса по словарю для rar-архивов", или назовите как захотите, на любом из из известных языков программирования (не сочтите за бахвальство), но лучше на С. |
|
01-07-2008 10:45>>> В смысле, никто не знает или просто не захочет говорить?
В том же смысле, в каком Вам ответили бы, если бы Вы спросили, как подобрать секретный ключ, зная публичный, для алгоритма шифрования RSA ;-) Задача эта пока не решена. А если нашелся гений, который ее решил, то навряд ли он выложит свое решение для свободного использования.
>>> Пол жизни её учить надо, а реально знаний не прибавляется.
А что Вы понимаете под словом "учить"? Запоминать наизусть все имеющиеся компоненты и их свойства? Так это не учить, это зубрить. Толку от такого изучения -- ноль. А чтобы понять смысл, требуется не так уж и много, так как язык достаточно прост и логичен. Скажем так, в C++ и "учить" не меньше, и на понимание больше времени уйдет, так как есть неоднозначности, которые, как в старом анедоте, нельзя понять, а нужно запомнить ;-) |
|
01-07-2008 09:07> В примере о вычислении размера содежимого архива, возможно, пропущен вызов функции
да, скорее всего пропущен. Может быть нужно подправить статью..? А то я чудом просто додумался.> А как подобрать пароль по словарю, если он забыт?
хмм... врядли здесь кто-то ответит )В смысле, никто не знает или просто не захочет говорить? Про незахочет чего-то не верится.> Интересно, кто-нибудь ответит на это сообщение? (Ведь немало времени прошло)
не так уж и много времени прошло. Компонент TUnRar так и не написан.Дельфи, по-моему, не априори... По мне так эта вещь хороша только для тестов и тем, кто её уже знает. Пол жизни её учить надо, а реально знаний не прибавляется. А кому нужен дельфийский компонент, тот его пусть и пишет от нечего делать).
Unrar.exe конечно хорошо, но описание с примером лучше. |
|
01-07-2008 07:28
01-07-2008 07:27сообщение от автора материала > В примере о вычислении размера содежимого архива, возможно, пропущен вызов функции
да, скорее всего пропущен.
> А как подобрать пароль по словарю, если он забыт?
хмм... врядли здесь кто-то ответит )
> Очень интересно, как просмотреть/распаковать запароленный/заблокированный архив?
отслеживать распакованный размер, искать очередные тома, подстанавливать пароль... надо в функции UnRarCallBack. Вообще, смотрити замечательное UnRarSDK: http://www.rarlab.com/rar/UnRARDLL.exe . Там и на Delphi есть.
> Интересно, кто-нибудь ответит на это сообщение? (Ведь немало времени прошло)
не так уж и много времени прошло. Компонент TUnRar так и не написан. |
|
01-07-2008 07:09Интересно, кто-нибудь ответит на это сообщение? (Ведь немало времени прошло)
В примере о вычислении размера содежимого архива, возможно, пропущен вызов функции RARProcessFile(hRar,RAR_SKIP,0,0); Во всяком случае, я тут пытаюсь просмотреть содержимое архива, так вот без этого оно только один файл показывает. При этом я ещё архив открываю с RAR_LIST - это обязательно? (пользую unrarlib-3.7.8 во FreeBSD, но, наверное, это не важно)
Очень интересно, как просмотреть/распаковать запароленный/заблокированный архив?
А как подобрать пароль по словарю, если он забыт?
Надежды нет, но ждать ответа буду... |
|
25-04-2008 16:02Очень полезная статья, вскорости понадобиться.
В принципе не сложно и с собой таскать, но удобнее интегрировать.
Жаль, что один оппонент своей агрессивностью отбивает всякое желание читать его аргументы. |
|
20-02-2008 14:13Спасибо!
10 минут назад я это разглядел. У меня это название как-то не связалось с встраиванием DLL. Я посчитал, что это относиться к unrar.
Приношу свои извинния. :-( |
|
19-02-2008 23:57Tor Bel:
А где ссылка?
В низу статьи ("Тестовый пример") |
|
19-02-2008 12:36Скачивать там ни чего не надо, к статье уже прилагается существенно изменённый архив DLLTools.zip . Именно его вы должны скачать для дальнейшей работы.
А где ссылка? |
|
12-01-2007 17:28Классная статья, все понятно, я как раз подумывал на эту тему и тут - готовое решение. Прчитал - радостный был до у... э в общем радостный!
Мне пригодилось! |
|
01-12-2006 12:25Кстати, про доработки. Насчет регистронезависимого GetPocAddress - это не слишком хорошая идея, т.к. оригинал (в WinAPI) регистрозависим. А цель ставится максимальной совместимости. Возможна ситуация, когда две разные функции, экспортируемые из dll, будут иметь имена, различающиеся только регистром. |
|
30-11-2006 13:19Флеймить будем здесь или где ?
Да чего тут флеймить-то, всё уже ясно...
Только вот на это отвечу:
Уважаемый, я свои аргументы обычно тоже не с потолка беру. И если я говорю, что в архивах таких-то и таких-то утилит от SysInternals используются дополнительные драйверы или DLL, значит так оно и есть.
Не знаю что и откуда берёте вы, но лично я скачиваю утилиты Руссиновича с офф-сайта.
Вобщем любой желающий может посмотреть файлик http://download.sysinternals.com/Files/SysinternalsSuite.zip и убедиться кто прав, а кто нет. |
|
30-11-2006 07:05to DRON:
Флеймить будем здесь или где ?
Так можно придраться к чему угодно: нет соответствующей книжки - значит отстой
Я могу и MSDN в пример привести - там тоже нету. Отгадайте с трех раз, почему ?
Вот не надо, я проверял:
Уважаемый, я свои аргументы обычно тоже не с потолка беру. И если я говорю, что в архивах таких-то и таких-то утилит от SysInternals используются дополнительные драйверы или DLL, значит так оно и есть. Купите книжку по внутреннему устройству Windows 2000, к ней прилагается компакт-диск с содержимым сайта www.sysinternals.com, в том числе и с архивами утилит, сами увидите.
Там могут быть проблемы только с GetModuleHandle, GetModuleFileName которые в принципе тоже решаемы (замена их на свои в импорте).
Может, сразу ntdll.dll свою написать ? Там весь загрузчик живет, и, смею заметить, делает довольно многоинтересных дел, об чем писал в MSDN Magazine Рассел Остерлунд.
Вот ссылка: http://www.microsoft.com/rus/msdn/magazine/archive/special_2/windows_2000.asp
Были приведены примеры того, что это может быть полезно и используется в реальных программах
Что касается программ Руссиновича, то в них драйверы хранятся в ресурсах исключительно с целью выгрузки в требуемый момент на диск и вызова функции загрузки драйвера с именем получившегося файла. Может, оно и способ, использовать ресурсы приложения, как контейнер. Могу даже предположить, что такой метод является одним из способов защиты от вызова их драйвера посторонними приложениями.
С уважением, |
|
30-11-2006 06:02Игорь Шевченко
Технология, описываемая в обсуждаемой статье, не является предметом для обязательного изучения в произведениях признанных экспертов по созданию Win32-приложений.
Так можно придраться к чему угодно: нет соответствующей книжки - значит отстой.
Отсюда разумный вывод, что не так страшны DLL, как их описывают автор статьи и комментаторы.
А причём тут страх? Были приведены примеры того, что это может быть полезно и используется в реальных программах. Зачем в который раз доказывать что программа может поставляться с кучей библиотек, с этим никто и не спорит.
Ну это не совсем верное утверждение.
Вот не надо, я проверял:
DiskMon - тот что лежит у меня (2.01) вообще не использует DLL/VXD/SYS.
Ctrl2Cap - это пример с исходником, а не приложение.
PsTools - pdh.dll не Руссиновича, так что думаю проблема только с лицензией (по крайней мере Psinfo.exe которая её использует, содержит DLL-в ресурсах).
В некоторых очень старых программах (которые сейчас удалены с его сайта) встроенных файлов действительно нет, но это только доказывает что Руссинович "столкнулся", а затем сделал так как лучше для пользователей:
CPUMON - очень старая
NtFrob - старая, под XP вообще не работает
NtpMon - под XP вешает систему
TOKENMON - тоже давно не обновлялась (1.01)
Может, заменить, дело действительно пары минут, но выяснение, работает ли он с именно нужной библиотекой и нет ли при такой работе нежелательных побочных эффектов, займет, на мой взгляд, несколько больше минут.
Там могут быть проблемы только с GetModuleHandle, GetModuleFileName которые в принципе тоже решаемы (замена их на свои в импорте).
Но я бы и не использовал эту методу в случаях аналогичных тем что у Руссиновича, как я уже говорил это не от хорошей жизни, просто не всякий исходник на C можно статически прилинковать к приложению на Delphi. А так как "все пишут на С", то ни книг нет, ни особого интереса к этой теме.
"Полухакерский метод" мне пришлось использовать только один раз и ещё пару раз "внедрение в ресурс+распаковка на диск", так что всё в меру, без фанатизма :)
Vga
В случае с ресурсами, насколько мне известно, они в память автоматически не грузятся, что позволяет после загрузки очистить память от исходной dll и оставить только загруженный образ.
Там на самом деле вообще ничего не грузится, просто MMF создаётся из файла и данные подгружаются при первом обращении, а затем могут снова выгрузиться. |
|
30-11-2006 04:13сообщение от автора материала 2 DRON и остальным:
Изложение действительно ужасно путанное, я некоторые места по нескольку раз перечитывал, хотя ничего сложного там нет.
Цетирую себя же: "Прежде, чем начать разбираться с кодом, давайте лучше попрактикуемся! Перенесите вышеуказанный программный код в свой проект, растяните Memo пошире, Memo.ScrollBars задайте ssBoth, в обработчике TForm1.Button1Click укажите реально существующий rar-архив. Запускайте приложение, жмите на кнопку..."
А вы так же делали? В код надо вчитываться ТОЛЬКО ПОСЛЕ реальной ПРАКТИКИ работы с примером. Надеюсь, теперь понятно стало. Повторять больше не буду.
И в-третьих, распаковка занимает некоторое время, и достаточно ощутимо может затянуть загрузку библиотеки.
По моим тестам, Inflate-сжатие с максимальной степенью сжатия + генерация текстового файла в 600кб занимает 0.2 секунды. Сколько займёт расжатие? Правильно, не больше 0.1 секунды. Если для кого-то это время ощутимо... или найдутся ещё какие либо возражения, то НЕ ИСПОЛЬЗУЙТЕ МОЮ БИБЛИОТЕКУ.
Ну так его и можно использовать, какая разница откуда грузить.
А такая разница, что там загрузчик уже сжатых данных. Не нравится, пиши свой или возьми исходный загрузчик по приведённой ранее ссылке.
Нет не больше. Начальный образ DLL-ки всё равно используется только при инициализации, а потом может быть спокойно вытеснен на диск, так что повлияет это только на размер EXE-шника на диске, а сжатие лучше совсем не использовать: во первых код распаковки тоже место занимает, во вторых полное сжатие EXE-шника каким нибудь пакером будет всегда эффективнее.
Изначально была такая идея. По моим тестам, если загрузить что-либо из ресурсов, то образ остаётся, какие флаги памяти не выставляй. К тому же в моём случае получается полностью автономный файл (нет необходимости таскать *.res). Код распаковки ~ 20Кб. Не нравится - не используй.
Отсюда разумный вывод, что не так страшны DLL, как их описывают автор статьи и комментаторы.
ГДЕЕЕ????? Где хоть слово о страшности, где? покажи пальцем!
Одни не хотят таскать Dll-и (я в том числе), другим всё равно. Статья - для первых. Вы - из вторых.
P.S. Зла не хватает, ей богу. |
|
30-11-2006 01:09to DRON:
А кто сказал, что не сталкиваются?
Технология, описываемая в обсуждаемой статье, не является предметом для обязательного изучения в произведениях признанных экспертов по созданию Win32-приложений. Отсюда разумный вывод, что не так страшны DLL, как их описывают автор статьи и комментаторы.
Есть такой довольно известный товарищ Марк Руссинович, который теперь работает на этот самый Microsoft (http://www.microsoft.com/technet/sysinternals/default.mspx ), так вот ВСЕ его утилиты являются "однофайловыми", а нужные драйвера (VXD,SYS) и библиотеки (для хуков) хранятся в ресурсах и распаковываются автоматически, совершенно прозрачно для пользователя.
Ну это не совсем верное утверждение. Навскиду приведу CPUMON, Ctrl2Cap, DiskMon, NtFrob, PsTools, NtpMon. У каждой из перечисленных в архиве лежит либо DLL, либо драйвер (SYS или VXD).
Если библиотека и так подгружается динамически, то достаточно пихнуть её в ресурс и заменить функции типа LoadLibrary, GetProcAddr на их аналоги (из »вопрос КС №37019« например) и больше ничего, дело пары минут.
Точно дело пары минут ? :)
А вот по вашей ссылке написано, что это полухакерский метод, работающий не со всеми библиотеками :)
Может, заменить, дело действительно пары минут, но выяснение, работает ли он с именно нужной библиотекой и нет ли при такой работе нежелательных побочных эффектов, займет, на мой взгляд, несколько больше минут.
Я конечно понимаю, что лавры Ивана Кулибина, оно цель почетная, но вот полезная ли ?
С уважением, |
|
29-11-2006 16:54Почти все, что я хотел сказать, написал DRON :)
Разве что по поводу ресурсов - в предложенном варианте dll сохраняется в секции данных и грузится в память. В случае с ресурсами, насколько мне известно, они в память автоматически не грузятся, что позволяет после загрузки очистить память от исходной dll и оставить только загруженный образ.
Ну и инсталлеры - хороший пример. Я могу три реальных примера привести:
1) Ghost Installer 1.6. Написан на Delphi, в головку (stub) инсталлятора внедрена написанныя на С библиотека распаковки CAB. Библиотека внедрена в ресурсы, грузится вроде бы методом извлечения во времянку и затем обычной динамической загрузки
2) Create Install 2003. Внедряется опять же библиотека распаковки CAB - cabarc.dll. Программа написана на С/С++, внедрение используется для уменьшения размера инсталлятора, если dll не требуется (если используется сжатие PPMd или пользователь уверен, что на целевой машине эта dll будет, например установлен IE4+)
3) GeLink. Это утилита, позволяющая собрать интерпретатор языка Gentee (gentee.dll) и программу на нем (байткод) в один независимый ехе. |
|
29-11-2006 09:50во первых код распаковки тоже место занимает, во вторых полное сжатие EXE-шника каким нибудь пакером будет всегда эффективнее.
И в-третьих, распаковка занимает некоторое время, и достаточно ощутимо может затянуть загрузку библиотеки. |
|
29-11-2006 09:25Довольно часто написанные ими программы используют DLL, для интереса зайдите проводником в свою папку Program Files и пройдитесь по подкаталогам. Как же так получается, что они не сталкиваются с ситуациями, описываемыми вами в посте про вашу прошлую работу ?
А кто сказал, что не сталкиваются? Да и разговор тут отнюдь не о программах устанавливаемых в Program Files.
Никто ведь не утверждает что приложение масштаба MSOffice надо пихать в один EXE-шник, речь идёт об утилитах которые хороши именно своей целостностью и возможностью установки простым копированием.
Ряд программ, написанных таким образом, довольно широко используется, например, существует такая фирма Microsoft
Есть такой довольно известный товарищ Марк Руссинович, который теперь работает на этот самый Microsoft (http://www.microsoft.com/technet/sysinternals/default.mspx ), так вот ВСЕ его утилиты являются "однофайловыми", а нужные драйвера (VXD,SYS) и библиотеки (для хуков) хранятся в ресурсах и распаковываются автоматически, совершенно прозрачно для пользователя. Может и у самой MS есть что-то подобное, но я не интересовался.
она всяко больше времени, сил и нервов займет, чем создание нормального дистрибутива даже в свободно распространяемых инсталляторах.
А почему больше? Если библиотека и так подгружается динамически, то достаточно пихнуть её в ресурс и заменить функции типа LoadLibrary, GetProcAddr на их аналоги (из »вопрос КС №37019« например) и больше ничего, дело пары минут.
Кстати говоря, всё это может понадобиться для тех же инсталляторов (или SFX), не таскать же вместе с Setup.exe ещё и UnRar.dll, если всё запаковано RAR-ом.
Во всех этих извращениях в основном виноват Borland, потому что пишущим на C и в голову не придёт внедрять unrar.dll в EXE-шник, они просто подключат её исходники или готовую LIB прилинкуют, а вот c Delphi такое практически невозможно (по крайней мере сложнее чем внедрить DLL-ку).
По поводу материала:
Изложение действительно ужасно путанное, я некоторые места по нескольку раз перечитывал, хотя ничего сложного там нет.
2) придётся самому писать загрузчик. К статье загрузчик уже прилагается
Ну так его и можно использовать, какая разница откуда грузить.
3) будет занято больше оперативной памяти (примерно на половину размера Dll)
Нет не больше. Начальный образ DLL-ки всё равно используется только при инициализации, а потом может быть спокойно вытеснен на диск, так что повлияет это только на размер EXE-шника на диске, а сжатие лучше совсем не использовать: во первых код распаковки тоже место занимает, во вторых полное сжатие EXE-шника каким нибудь пакером будет всегда эффективнее. |
|
29-11-2006 07:10Сергей Рощин & Игорь Шевченко
Господа, глупый спор ведете. У любого механизма есть свои достоинства и недостатки, и у DLL тоже. Достоинства - это то, что различные приложения могут совместно использовать один и тот же код, а также возможность разделения программы на независимые модули, целью которых является решение определенного узкого круга задач - так называемый принцип модульности. Недостатки также есть, все наверное слышали такой термин, как "Ад DLL". И каждый сам вправе для себя решать, взвесив все "за" и "против", подходит ли ему данный механизм или нет. |
|
29-11-2006 07:01to Cepгей Poщин
Я описал ситуации которые происходили в среднем 1 раз в месяц на моей прошлой работе.
Я искренне могу порадоваться, что эта работа является для вас прошлой. Но вот смотрите, как получается, программы пишут много разных людей и даже коллективов, как в России, так и за ее пределами. Довольно часто написанные ими программы используют DLL, для интереса зайдите проводником в свою папку Program Files и пройдитесь по подкаталогам. Как же так получается, что они не сталкиваются с ситуациями, описываемыми вами в посте про вашу прошлую работу ? Ряд программ, написанных таким образом, довольно широко используется, например, существует такая фирма Microsoft, которая пишет программы, использующие DLL, и, насколько я понимаю, с ее произведениями у ваших пользователей по прошлой работе проблем нету.
Если вам лень делать нормальную установку, то у меня есть один небольшой вопрос - почему же вам не лень использовать описанную в статье технологию - она всяко больше времени, сил и нервов займет, чем создание нормального дистрибутива даже в свободно распространяемых инсталляторах.
С уважением, |
|
29-11-2006 06:58Игорь, к сожалению, Сергей обрисовал утрированные, но совсем не утопические ситуации.
|
|
29-11-2006 06:52Уважаемый, вы описываете утопические ситуации. Я описал ситуации которые происходили в среднем 1 раз в месяц на моей прошлой работе. Привeт из "Утoпии" :( |
|
29-11-2006 06:45Дмитрий Мозулёв
Да не кипятитесь вы так! Я не пытался сделать вам укор, что типа неправильным вы способом DLL загружаете. Просто предложил еще один вариант, чтобы вы теперь смогли с гордостью сказать, что знаете четыре способа интеграции и последующей загрузки DLL. А насчет самому создать файл ресурсов - разве это проблема? |
|
29-11-2006 06:44to Сергей Рощин:
Попробую объяснить:
Когда работаешь в обществе состоящем не из программистов, а из юзеров, то постоянно возникают ситуации типа
Уважаемый, вы описываете утопические ситуации. Ни одни кривые руки и лень программиста не являются основанием придерживаться технологии, упомянутой в статье.
С уважением, |
|
29-11-2006 06:35сообщение от автора материала На самом деле в файл сохраниять не обязательно. Можно прямо из ресурсов и загрузить:
В этом случае:
1) придётся вручную создавать файл ресурсов (не сильный аргумент)
2) придётся самому писать загрузчик. К статье загрузчик уже прилагается
3) будет занято больше оперативной памяти (примерно на половину размера Dll) |
|
29-11-2006 06:29"J-опечатки" исправлены. Небольшое расследование показало, что "J" появились в тех местах, где в исходном вордосвском тексте вы ставили смайлики - вот так интересно они конвертировались. |
|
29-11-2006 06:14Включить DLL в файл ресурсов, файл ресурсов прилинковать к своему приложению. При загрузке, сохранить DLL в отдельный (лучше в папке "Temp") файл; динамически загрузить все функции из полученной DLL.
На самом деле в файл сохраниять не обязательно. Можно прямо из ресурсов и загрузить:
http://www.rsdn.ru/article/baseserv/peloader.xml |
|
29-11-2006 06:13Все-таки непонятно, чем DLL провинились Попробую объяснить:
Когда работаешь в обществе состоящем не из программистов, а из юзеров, то постоянно возникают ситуации типа
- 1. Я переустановил Windows, и теперь ваша программка не работает.
2. А почему программа которую я у вас в прошлом годе скопировал не работает. Дискетку проверял — она небитая.
3. Не компьютарщика мы уволили ... А что такое ДЭ-ЭЛ-ЭЛ? ...
4. У меня отчеты за позапрошлый год горят, у меня нет времени ни чего скачивать!!!
5. Нет электронной почты (интернета, телефона) у нас в Cинерыловке — нет!
6. DLL-ку скачал самую новую, а программа ваша всё равно не работает!
7. Теперь Ваша программка работает, но перестал работать 1С и MS Office!!!
Всё это, или похожее слышал лично.
Так-что использование отдельных DLL обязывает создавать полноценные Setup-ы, что не всегда хочется делать и всё равно не гарантирует, что кто-то не скопирует один exe-шник.
По поводу статьи, хочу заметить, что в нашем королевстве, в основном, не поэты живут. Давайте сосредоточимся на конкретных ошибках (если такие есть). Любая стстья не дотягивает до "Войны и мира" так что же вообще ни чего не писать. |
|
29-11-2006 06:07Увидел заголовок "Как не таскать за собой Dll" и ринулся искать в статье реализацию алгоритма сжатия. Напрасно. |
|
29-11-2006 05:46Все-таки непонятно, чем DLL провинились, что требуется такой набор действий. Обычно DLL являются одним из способов повторного использования кода, для этого их, собственно и изобрели.
С уважением, |
|
29-11-2006 05:23сообщение от автора материала Ещё одна J-опечатка: "который прилагается к статье J"
Ещё прилагаемый файл нужно переименовать в "DllTools" |
|
29-11-2006 05:02сообщение от автора материала Одно дело размер exe, другое дело размер pas модуля
> Сильно недотягивает до общего уровня. Советую разделить и переработать статью.
Ну дык это моя первая статья. Да и не планировал я её, спонтанно как то получилось всё...
Но плохой статью ни в коем случае не считаю, жаль, что кому-то не понравилось...
P.S. Нашёл опечатку (не мою, вроде): "Воспользоваться утилитой Dll2Lib, программировать на VisualC++ J[/B]." |
|
29-11-2006 03:48Оценку содержания даю негативную хотябы из за такого:
"Вопрос: Почему полученный модуль прибавляет к exe в 2 раза меньше, чем сходная DLL?
Вопрос: Почему полученный модуль в 2 раза больше, чем исходная DLL?"
Некоторые анспекты материала о динамической загрузке интересены, но .....
Очень смазано и автор прыгает с одной темы на другую, в результате тема нераскрыта, да и непонятно какая тема должны быть изложена. Простое использование DLL и так известно.
Сильно недотягивает до общего уровня. Советую разделить и переработать статью. |
|
|
|