dlltools переводит dll в pas
Модератор: Модераторы
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
dlltools переводит dll в pas
кто нибуть юзал сие чудо ?
http://www.basegraph.com/bg/tutorials/e ... tools.html
а может кто-то хочет и не знает =)
правда под дельфю изначально но думаю перевести можно.
суть программы в том чтобы перевести dll в пасовский файл который можно потом использовать в проэкте и не таскать вместе с приложением доп бублиатеки.
http://www.basegraph.com/bg/tutorials/e ... tools.html
а может кто-то хочет и не знает =)
правда под дельфю изначально но думаю перевести можно.
суть программы в том чтобы перевести dll в пасовский файл который можно потом использовать в проэкте и не таскать вместе с приложением доп бублиатеки.
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
-
Replicator
- постоялец
- Сообщения: 154
- Зарегистрирован: 30.04.2006 17:14:45
- Откуда: Outer Heaven
- Контактная информация:
Интересно, каков принцип действия?
Мне приходит на ум только закодировать dll в base64 (ну или как-нибудь иначе - неважно), и присвоить это огромное значение строке. А при запуске приложения сохранить значение строки в файл с расширением dll и работать с ним.
Но это такое извращение... Кстати, раньше я тоже был сторонником делать все приложение одним файлом. Но это прошло. Так что мой совет: научитесь пользоваться утилитами для создания установочных файлов, InnoSetup - отличная штука.
Мне приходит на ум только закодировать dll в base64 (ну или как-нибудь иначе - неважно), и присвоить это огромное значение строке. А при запуске приложения сохранить значение строки в файл с расширением dll и работать с ним.
Но это такое извращение... Кстати, раньше я тоже был сторонником делать все приложение одним файлом. Но это прошло. Так что мой совет: научитесь пользоваться утилитами для создания установочных файлов, InnoSetup - отличная штука.
принцип действия насколько помню почти такой, загоняется в статический бинарный масссив, а потом выгружается это в память ну и дальше дело техники.
сейчас это стало распространенным трюком для троянов
поэтому многие файрволы начинают пищать
пока насколько я знаю остался еще один метод (по крайней мере агнитум не ругается)
но опять - все это только под винды
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Прочитал,.. хм.. а мне показалось что речь идет о переводе модулей (юнитов) импорта dll из динамического в статический и обратно.
Динамический это когда LoadLibrary/GetProcAddress, а статический это когда через external dllname name 'procname'...
Отсюда вопрос:
Откуда идет мода на динамические модули импорта?
Вот открываю src\fpc\packages\extra\opengl\gl.pas и вижу:
Не пойму, что так быстрее вызов происходит?..
Динамический это когда LoadLibrary/GetProcAddress, а статический это когда через external dllname name 'procname'...
Отсюда вопрос:
Откуда идет мода на динамические модули импорта?
Вот открываю src\fpc\packages\extra\opengl\gl.pas и вижу:
Код: Выделить всё
FreeOpenGL;
LibGL := LoadLibrary(PChar(dll));
if LibGL = 0 then raise Exception.Create('Could not load OpenGL from ' + dll);
try
@glAccum := GetGLProcAddress(LibGL, 'glAccum');
@glAlphaFunc := GetGLProcAddress(LibGL, 'glAlphaFunc');
@glAreTexturesResident := GetGLProcAddress(LibGL, 'glAreTexturesResident');
@glArrayElement := GetGLProcAddress(LibGL, 'glArrayElement');
@glBegin := GetGLProcAddress(LibGL, 'glBegin');
@glBindTexture := GetGLProcAddress(LibGL, 'glBindTexture');
.....
Не пойму, что так быстрее вызов происходит?..
shade писал(а):Отсюда вопрос:
Откуда идет мода на динамические модули импорта?
При статическом импорте программа не запустится если не найдена соответствующая длл или хотя бы одна из используемых функций.
При динамическом импорте можно проверить наличие этой длл (или какой-то функции, которая есть только в новой версии длл) и не пользоваться ее возможностями если ее нет (и если такое предусмотрено программой).
Очень часто динамический импорт используется для длл, которые есть только в NT, чтобы программа успешно запускалось на 9х, где таких длл нет вообще.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
-
Replicator
- постоялец
- Сообщения: 154
- Зарегистрирован: 30.04.2006 17:14:45
- Откуда: Outer Heaven
- Контактная информация:
shade писал(а):Ну если программа зависит от некоторой dll, то какой смысл динамически загружать? чтобы просто сказать пользователю мол нет такой dll и уйти?.. тоже самое может сделать сама ОСь
Например, программа должна работать как на вин9х, так и на винНТ. Но при запуске на ВинНТ она должна использовать какие-то специфические функции, которых в вин9х не существует, например, работу с доменными пользователями.
Вот тут динамический импорт просто необходим. Если нужной длл или функций нет, то они просто не используются...
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
-
Replicator
- постоялец
- Сообщения: 154
- Зарегистрирован: 30.04.2006 17:14:45
- Откуда: Outer Heaven
- Контактная информация:
-
Replicator
- постоялец
- Сообщения: 154
- Зарегистрирован: 30.04.2006 17:14:45
- Откуда: Outer Heaven
- Контактная информация:
