Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   *.exe Editor (https://www.clubdelphi.com/foros/showthread.php?t=81388)

force1758 09-11-2012 16:46:11

*.exe Editor
 
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/an...0141/#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:
Código Delphi [-]
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:
Cita:

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...ZZUcMK0GiUesPw

Files
http://www.delphibasics.co.uk/ByFunction.asp?Main=Files
Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 08:07:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi