Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизКак можно зашить в программу dll? Найти похожие ветки
← →
hgd (2004-11-03 09:18) [0]У меня в программе используются dll, я хочу чтобы они были в программе "зашиты". Как можно зашить в программу dll?
← →
Reindeer Moss Eater © (2004-11-03 09:19) [1]включи модули dll в uses своей программы
← →
hgd (2004-11-03 09:22) [2]спасибо, а как просто написать
uses mydll.dll ?
← →
Reindeer Moss Eater © (2004-11-03 09:30) [3]Нет.
Так dll просто "пришьется" к программе.
А если хочешь её "зашить", надо в uses включать *.pas модули этой длл.
← →
hgd (2004-11-03 09:34) [4]ой... а можно создать такой pas модуль, если есть только dll
← →
Reindeer Moss Eater © (2004-11-03 09:35) [5]Конечно можно.
Запускаем FAR и жмем Shift+F4. Вводим имя файла.
← →
hgd (2004-11-03 09:42) [6]тоесть dll переименовать в pas?
← →
Digitman © (2004-11-03 09:45) [7]
> hgd
ты хоть бы сподобился что ли пояснить. что конкретно ты подразумеваешь под термином "зашить" ... и по какому поводу тебя посетила сия блажь ...
← →
Reindeer Moss Eater © (2004-11-03 09:47) [8]тоесть dll переименовать в pas?
переименовать это F6, а не Shist+F4
← →
Sergey_Masloff (2004-11-03 09:57) [9]Digitman © (03.11.04 09:45) [7]
>ты хоть бы сподобился что ли пояснить. что конкретно ты >подразумеваешь под термином "зашить" ... и по какому поводу >тебя посетила сия блажь ...
Бинарный код DLL вшить в EXE видимо. Видимо, частично избежать DLL HELL хочет. И не одинок он в этом, и даже есть утилита чуть ли не в MS Platform SDK которая это делает. Насчет Platform SDK могу наврать но что есть такое чудо - 100%
← →
1008 © (2004-11-03 10:05) [10]Можно, например, порыться тут: http://www.delphiworld.narod.ru/
Я там нашёл следующее: Добавить данные в EXE файл и получить их
function AttachToFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;
var
aStream: TFileStream;
iSize: Integer;
begin
Result := False;
if not FileExists(AFileName) then
Exit;
try
aStream := TFileStream.Create(AFileName, fmOpenWrite or fmShareDenyWrite);
MemoryStream.Seek(0, soFromBeginning);
// seek to end of File
// ans Ende der Datei Seeken
aStream.Seek(0, soFromEnd);
// copy data from MemoryStream
// Daten vom MemoryStream kopieren
aStream.CopyFrom(MemoryStream, 0);
// save Stream-Size
// die Streamgro?e speichern
iSize := MemoryStream.Size + SizeOf(Integer);
aStream.Write(iSize, SizeOf(iSize));
finally
aStream.Free;
end;
Result := True;
end;
function LoadFromFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;
var
aStream: TFileStream;
iSize: Integer;
begin
Result := False;
if not FileExists(AFileName) then
Exit;
try
aStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
// seek to position where Stream-Size is saved
// zur Position seeken wo Streamgro?e gespeichert
aStream.Seek(-SizeOf(Integer), soFromEnd);
aStream.Read(iSize, SizeOf(iSize));
if iSize > aStream.Size then
begin
aStream.Free;
Exit;
end;
// seek to position where data is saved
// zur Position seeken an der die Daten abgelegt sind
aStream.Seek(-iSize, soFromEnd);
MemoryStream.SetSize(iSize - SizeOf(Integer));
MemoryStream.CopyFrom(aStream, iSize - SizeOf(iSize));
MemoryStream.Seek(0, soFromBeginning);
finally
aStream.Free;
end;
Result := True;
end;
Может есть ещё чего, но искать лень.
← →
Digitman © (2004-11-03 10:07) [11]
> Sergey_Masloff (03.11.04 09:57) [9]
все равно же блажь .. но уж если на то пошло, то и утилит никаких не нужно, достаточно сформировать ресурс, содержащий бин.образ
← →
Sergey_Masloff (2004-11-03 17:08) [12]Digitman © (03.11.04 10:07) [11]
>все равно же блажь ..
Чистейшей воды
>но уж если на то пошло, то и утилит никаких не нужно, >достаточно сформировать ресурс, содержащий бин.образ
хм... а толку? Ты ж в ресурс управление не передашь?
Та утилита непосредственно секции исполняемого кода EXE модифицировала добавляя код DLL и переставляя все вызовы функций DLL на адреса функций в теле того же EXE. Вобщем, еще тот изврат но видел лично. Правда, такого функционала мне не нужно было поэтому не экспериментировал сам.
← →
Digitman © (2004-11-03 17:15) [13]
> хм... а толку? Ты ж в ресурс управление не передашь?
а наЩет передачи какого-то там "управления" речи в вопросе не шло ... звыняйте уж) ... "зашить" - это одна опера, передать какое-то там куда-то там "управление" - совершенно иная опера ... согласишься ведь 7
← →
Sergey_Masloff (2004-11-03 21:43) [14]Sergey_Masloff (03.11.04 17:08) [12]
>согласишься ведь
куда я денусь...
← →
Игорь Шевченко © (2004-11-03 23:27) [15]
> Та утилита непосредственно секции исполняемого кода EXE
> модифицировала добавляя код DLL и переставляя все вызовы
> функций DLL на адреса функций в теле того же EXE
И настраивая relocations в самой DLL ? Неслабая работа, однако.
А вот в блаженной памяти операционных системах для EC ЭВМ такие фокусы можно было довольно легко проделать на уровне линкера, благо формат EXEшников позволял...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.033 c