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

Вниз

Включение в исполняемый файл других файлов.   Найти похожие ветки 

 
AlexanderMS ©   (2007-01-12 17:56) [0]

Возникла необходимость в целях защиты включить файл (для регулярной работы программы с ним) в исполняемый файл, исключив возможность внесения изменений. Моя программа универсальна, и, по сути, может работать с файлом через команду вроде "Открыть". Но потребовалось сделать "личную" программу только для данного файла, и лишний файл на диске будет ни к чему. Поэтому нужно включить этот файл в exe-файл программы.
Как это сделать? И как потом обращаться ко включённому файлу?


 
Array ©   (2007-01-12 18:01) [1]

ресурсы, ищите информацию про ресурсы и работу с ними


 
kaZaNoVa ©   (2007-01-12 18:13) [2]

AlexanderMS ©   (12.01.07 17:56)
тебе его запускать надо будет?


 
kaZaNoVa ©   (2007-01-12 18:13) [3]

или скрывать?


 
AlexanderMS ©   (2007-01-12 18:15) [4]


> kaZaNoVa ©   (12.01.07 18:13) [2]-[3]


Да, скрывать. И читать из него. Но не записывать.


 
kaZaNoVa ©   (2007-01-12 18:20) [5]

AlexanderMS ©   (12.01.07 18:15) [4]
а зачем тебе файл? можешь просто сделать массив (of char) и будет тебе файл в константе .....  

(некоторые "недальновидные" антивирусы могут посчитать такое за вирус ..(   )


 
kaZaNoVa ©   (2007-01-12 18:21) [6]

Пример:


const
DumpData : array[1..Delta] of Byte = (

    77,  90,  80,   0,   2,   0,   0,   0,   4,   0,  15,   0, 255, 255,   0,    0 );


 
AlexanderMS ©   (2007-01-12 18:24) [7]


> а зачем тебе файл? можешь просто сделать массив (of char)
> и будет тебе файл в константе .....  


Ага, и пять килобайт прописывать. А потом ещё с чтением мучиться...

См. [0].


> Моя программа универсальна, и, по сути, может работать с
> файлом через команду вроде "Открыть". Но потребовалось сделать
> "личную" программу только для данного файла, и лишний файл
> на диске будет ни к чему. Поэтому нужно включить этот файл
> в exe-файл программы.


 
Anatoly Podgoretsky ©   (2007-01-12 19:25) [8]

> AlexanderMS  (12.01.2007 18:24:07)  [7]

С чтением мучаться, если ресурсы, а если контантный массив, то откуда возьмется мучение.


 
kaZaNoVa ©   (2007-01-12 21:41) [9]

AlexanderMS ©   (12.01.07 18:24) [7]
Ага, и пять килобайт прописывать. А потом ещё с чтением мучиться...

неприпишется .) да и всегда UPX пожать можно ..

пример:

{ ################################################ }
{ #                                              # }
{ #   Simple File_to_Array dumper by Dr.Golova   # }
{ #   mailto: dr.golova@reversing.net            # }
{ #                                              # }
{ ################################################ }
{$WARNINGS OFF}
program dll_dump;
{$APPTYPE CONSOLE}

var
 F1   : File;
 F2   : Text;
 I    : Integer;
 S    : String;
 Data : PChar;

begin
UseInputOutput;
 Writeln(#13#10"Simple File_to_Array dumper by Dr.Golova...");
 if ParamCount < 1 then begin
   Writeln("Usage   : dll_dump.exe <source_file.dll> <destination_file>");
   Writeln("Example : dll_dump.exe test_dll.dll dumpdata.inc");
   Readln;
   Halt(1);
 end;

 try
   Assign(F1, ParamStr(1));
    if ParamCount = 1 then
     Assign(F2,ParamStr(1)+".inc")
    else
   Assign(F2, ParamStr(2));
   Reset(F1, 1);
   Rewrite(F2);
   GetMem(Data, FileSize(F1));
   BlockRead(F1, Data^, FileSize(F1));
   Str(FileSize(F1), S);
   WriteLn(F2, "const"#13#10"Delta="+s+";"#13#10" DumpData : array[1..Delta] of Byte = ("#13#10);
   Write(F2, "    ");
   if FileSize(F1) > 0 then
     for I := 1 to FileSize(F1) do begin
       Write(F2, Byte(Data[I-1]):3);
       if I < FileSize(F1) then Write(F2, ", ");
       if I mod 15 = 0 then Write(F2, #13#10"    ");
     end;
   Write(F2, " );");
   FreeMem(Data, FileSize(F1));
   Close(F1);
   Close(F2);
 except
   Writeln("Some Fatal Error... Sorry...");
   Halt(2);
 end;
   Writeln("All Done..."#13#10);
 end.


 
GrayFace ©   (2007-01-13 02:50) [10]

С ресурсами тоже все просто. Только любой желающий сможет достать твой файл из ресурсов.


 
vain ©   (2007-01-13 12:36) [11]


> GrayFace ©   (13.01.07 02:50) [10]
>
> С ресурсами тоже все просто. Только любой желающий сможет
> достать твой файл из ресурсов.

Ресурсы, ASPack.


 
AlexanderMS ©   (2007-01-13 15:37) [12]


> kaZaNoVa ©   (12.01.07 21:41) [9]

Спасибо.
Хорошо, допустим, у меня файл в константном массиве (решил, что так лучше). "Внешний" файл программа читает с помощью TFileStream. А как читать из массива? Ведь не переписывать же функцию чтения? Может, как-нибудь можно связать массив с TFileStream или TMemoryStream.


 
Anatoly Podgoretsky ©   (2007-01-13 16:41) [13]

> AlexanderMS  (13.01.2007 15:37:12)  [12]

Зачем читать, оно уже прочитано, просто используй.


 
AlexanderMS ©   (2007-01-13 17:30) [14]


> Зачем читать, оно уже прочитано, просто используй.


Как прочитано? Не так, как мне нужно. И использовать я так не могу. Нужно прочитать, к примеру, длину i-ой строки, потом саму строку, потом ещё много всего.


 
koha ©   (2007-01-13 19:33) [15]

Вот ранне обсуждавшееся ветка на тему Модуль Compress.pas
http://delphimaster.net/view/2-1168212195/
- здесь функции по извлечению запокованных и присоедененных ресурсов.
- Ппроцесс такой: файл пакуешь функцией Function
CompressFile(InpFile: String; OutFile: String; N: Integer): boolean;
затем запакованный файл сомпилишь через brcc32.exe ( вкомплекте с делфи идет) присоеденяешь ресурс к проекту и присоеденяешь мой модуль Compress.pas затем в коде программы используешь проседуру для извлечения Function DecompressResToFile(ResName: String; ResType: PChar; OutFile: String): Boolean;
- если необходимо могу заново поместить модуль на форуме или выслать по мылу. тот что обсуждался не доработан, но там и все написано, что нужно.


 
Anatoly Podgoretsky ©   (2007-01-13 19:33) [16]

> AlexanderMS  (13.01.2007 17:30:14)  [14]

Ознакомься, что такое массивы и в части как они реализованы в Дельфи.


 
GrayFace ©   (2007-01-27 08:29) [17]

AlexanderMS ©   (13.01.07 15:37) [12]
Может, как-нибудь можно связать массив с TFileStream или TMemoryStream.

Можно.



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

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

Наверх




Память: 0.51 MB
Время: 0.042 c
4-1159288235
Tanya
2006-09-26 20:30
2007.02.11
Программа с невидимым окном для приема сообщений


15-1169452147
IGray
2007-01-22 10:49
2007.02.11
Схема на монитор очень нужна! (Samsung 757mb)


15-1168953290
iXT
2007-01-16 16:14
2007.02.11
HP Compaq nx7400


2-1169597485
Riply
2007-01-24 03:11
2007.02.11
Использование функции MsgWaitForMultipleObjects


3-1164137692
DillerXX
2006-11-21 22:34
2007.02.11
Помогите составить SQL запрос...