Sus utilidades son varias:
LeerFichero: Función para leer el contenido de cualquier fichero que nos devolverá el contenido del mismo en una string.
EscribirFichero: Función para escribir cualquier string en un fichero nuevo.
LeerEOF: Función que leerá el contenido existente entre 2 delimitadores de cualquier fichero, nos devolverá el contenido en una string.
Reverse: Simple string reverse utilizado en la función LeerEOF.
Existe una unit muy similar creada por Xash, tuve algunos problemas con dicha unit así que decidí hacer la mía que, basándome en pruebas, funciona mejor la lectura del EOF.
Código: Seleccionar todo
{
Unit MetalEOF
Autor: Metal_Kingdom
Fecha: 25/04/2012
Web: udtools.net
Funciones: Leer ficheros, escribir ficheros, leer EOF entre 2 delimitadores
}
unit MetalEOF;
interface
function Reverse(Texto: String):String;
function LeerEOF(RutaArchivo, Delimitador1, Delimitador2: String): String;
function LeerFichero(ruta: string): string;
procedure EscribirFichero(QueEscribir, EnQueRuta: string);
implementation
//Simple Reverse.
function Reverse(Texto: String):String;
var
i: integer;
begin
for i:= Length(Texto) downto 1 do
Result:= Result + Texto[i];
end;
//Leer EOF
function LeerEOF(RutaArchivo, Delimitador1, Delimitador2: String): String;
var
F: File;
S: byte;
Total, Rev: String;
begin
Assignfile(F,RutaArchivo);
{$i-}
Reset(F,1);
{$i+}
if IOResult = 0 then
begin
while not Eof(F) do
begin
blockRead(F,S,1);
Total:= Total + chr(s);
end;
Rev:= Reverse(Total);
Result:= Reverse(Copy(Rev, Pos(Reverse(Delimitador2), Rev) + Length(Delimitador2),
Pos(Reverse(Delimitador1), Rev) - Pos(Reverse(Delimitador2), Rev) - Length(Delimitador2)));
end else Exit;
CloseFile(F);
end;
//Leer contenido de un fichero
function LeerFichero(Ruta: string): string;
var
F: file;
S: byte;
begin
Assignfile(F,Ruta);
{$i-}
Reset(F,1);
{$i+}
if IOResult = 0 then
begin
while not eof (f) do
begin
blockRead(F,S,1);
Result:= result + chr(S);
end;
end else Exit;
CloseFile(F);
end;
//Escribir cadenas en un fichero nuevo.
procedure EscribirFichero(QueEscribir, EnQueRuta: string);
var
F: textfile;
begin
Assignfile(F,EnQueRuta);
Rewrite(F);
write(F,QueEscribir);
CloseFile(F);
end;
end.
Código: Seleccionar todo
var
stb, server: string;
begin
stb:= LeerFichero('C:\stub.exe');
server:= LeerFichero('C:\server.exe');
//En un crypter lógicamente deberemos encriptar antes de escribir, ej: server:= MetCr(server);
EscribirFichero(stb + 'Delimitador1' + server + 'Delimitador2', 'C:\encriptado.exe');
end;
Código: Seleccionar todo
var
encriptado: string;
begin
encriptado:= LeerEOF('C:\encriptado.exe', 'Delimitador1','Delimitador2');
//Aquí hacemos lo que queramos con el encriptado, desencriptarlo y escribirlo a disco con EscribirFichero, desencriptarlo y hacer uso del runpe, etc..
end;