PDA

Ver la Versión Completa : *.exe Editor


force1758
09-11-2012, 16:46:11
Hola amigo de esta bella comunidad esta vez vengo a pedirle sus conocimientos en delphi para ver si hay alguna manera de modificar un archivo.exe solamente cambiándole una cadena de byte sin utilizar otro programa hexeditor sino codeado por mi que busque en el 'exe' esa cadena de byte y yo la modifico directamente se los agradeceria mucho su ayudad

Gracias att:Force1758

Casimiro Notevi
09-11-2012, 17:24:41
Sí hay alguna manera, lo abres en modo binario, lo modificas y lo guardas.

WkaymQ48
09-11-2012, 18:39:01
Échale un vistazo a esto:
http://www.delphiaccess.com/forum/animaciones-y-juegos-en-delphi-24/juego-(buscar-clave)/msg30141/#msg30141

Y si tienes tiempo lee el resto del tema, trata de como se puede saltar una protección (muy simple) de un programa, aplicando un "patch"

Saludos

force1758
09-11-2012, 20:59:53
Gracias amigo me sirvió de mucho tu ayuda ahora lo que me toca es implementarlo a mi programa y gracias de nuevo

nlsgarcia
09-11-2012, 21:04:32
force1758,

Revisa este código:

procedure TForm1.Button1Click(Sender: TObject);
var
F1: TFileStream;
F2: TFileStream;
Buffer: array[0..1023] of byte; // Permite manejar la data en binario.
i : Integer;

begin

if not FileExists(ExtractFilePath( Application.ExeName ) + 'Binario1.dat') then
begin
MessageDlg('El Archivo a Procesar No Existe', mtInformation,[mbOk], 0);
exit;
end;

try
// Declaramos el archivo de entrada para ser procesado en modo de solo lectura.
F1 := TFileStream.Create(ExtractFilePath( Application.ExeName ) + 'Binario1.dat', fmOpenRead);

// Declaramos el archivo de salida para ser creado.
F2 := TFileStream.Create(ExtractFilePath( Application.ExeName ) + 'Binario2.dat', fmCreate);

// Verifica si se ha alcanzado el fin del archivo de entrada.
while F1.Position < F1.Size do
begin
// Inicializamos el Buffer.
FillChar(Buffer,SizeOf(Buffer),0);
// Leemos un bloque de 1024 bytes del archivo de entrada.
F1.Read(Buffer,1024);
// Modificamos a nuestra conveniencia el bloque de 1024 Bytes del Buffer de Entrada.
for i := 0 to 1023 do
begin
// Por ejemplo:
if (BuFfer[i] = Ord('A')) Then Buffer[i] := Ord('B');
end;
// Grabamos la información modificada en el archivo de salida.
F2.Write(Buffer,1024);
end;
except
MessageDlg('Error de I/O en Archivo', mtInformation,[mbOk], 0);
end;

// Liberamos los recursos de archivo al finalizar su procesamiento.
F1.Free;
F2.Free;

end;

El código anterior lee un archivo en modo binario (Binario1.dat), lo modifica y salva los cambios en un nuevo archivo se salida (Binario2.dat).

Revisar estos links:

Descarga de Delphi al límite en PDF : Trabajando con Archivos de Texto y Binario (I, II, III, IV, V).
http://www.google.com/url?sa=t&rct=j&q=delphi%20al%20limite%20%2Barchivos%20%2Bbinario&source=web&cd=6&ved=0CE4QFjAF&url=http%3A%2F%2Fwww.intitec.com%2Fvarios%2FDelphi_al_limite.pdf&ei=fDOdUJDqN5Pp0QH5tICIBw&usg=AFQjCNHDbAG_kp3zHfk6ZZUcMK0GiUesPw

Files
http://www.delphibasics.co.uk/ByFunction.asp?Main=Files

Espero sea útil :)

Nelson.