Ver Mensaje Individual
  #5  
Antiguo 09-03-2015
Mav Mav is offline
Miembro
 
Registrado: jun 2007
Posts: 39
Reputación: 0
Mav Va por buen camino
Vale, lo que buscas entonces es un "Patcher", algo así como esto:
Código Delphi [-]
{$APPTYPE CONSOLE}
Program patch_programa;

Uses Windows;
Const
      IntroMessage : string = 'Programa 2.70, Crack by cualquiera!...';
      TargetFileName : string = 'programa.exe';
      TargetBackupName : string = 'programa.bak';
      TargetFileLength : longint = 568352;
      NumberOfBytes = 21;
      TargetOffsets : Array [1..NumberOfBytes] Of Longint = ($000B1F,$0043C0,$007EA9,$007EAA,$00ACA3,$00E3D4,$00E69F,$00EC77,$00ECAC,$00ECED,$00F8D4,$01772B,
                                                             $01772C,$01772D,$0178F6,$01A36C,$01AD5F,$01AD60,$01AD61,$01AE54,$021055);
      TargetBytes : Array [1..NumberOfBytes] Of Byte = ($EB,$EB,$00,$00,$00,$00,$EB,$EB,$EB,$EB,$EB,$E9,$F3,$00,$EB,$00,$E9,$BE,$00,$EB,$EB);

var f: File Of Byte;
    ErCode: Byte;

Function FileOpen:Integer;
Begin
{$I-}
Assign(f,TargetFileName);
FileMode := 2;
Reset(F);
{$I+}
ErCode:=0;
If IOResult<>0 Then ErCode:=1 Else
If FileSize(f)<>TargetFileLength Then ErCode:=2;
If ErCode=0 Then FileOpen:=0 Else FileOpen:=-1;
End;

Procedure ShowErr(ErCode:Byte);
Begin
 WriteLn;
 Write('Error..: ') ;
 Case ErCode Of
  1: Writeln(TargetFileName,' No se encuentra o se está usando.');
  2: Writeln(TargetFileName,' :Tamaño de archivo distinto. Será otra versión.');
 End;
 Readln;
 Halt;
End;

Procedure FileModifyAndClose;
var j:byte;
Begin
{$I-}
 For j:=1 to NumberOfBytes Do
 Begin
  Seek(f,TargetOffsets[j]);
  Write(f,TargetBytes[j]);
 End;
 Close(F);
{$I+}
 If IOResult=0 Then Writeln(TargetFileName,' Se ha cambiado con éxito!')
  Else Writeln('Eeeeee! Error desconocido ',TargetFileName,' !');
End;

Procedure ShowIntro;
Begin
 Writeln;
 Writeln(IntroMessage);
 Writeln;
End;

Procedure MakeBackup;
begin
 Write('Haciendo copia del archivo : ');
 If CopyFile(PChar(TargetFileName),PChar(TargetBackupName),True) Then
  Writeln(TargetBackupName) Else
   Begin
    Writeln('Error : Ya existe la copia o no hay espacio en disco.');
    ReadLn;
    Halt;
   End;
end;

Begin
 ShowIntro;
 If FileOpen<0 Then ShowErr(ErCode) Else MakeBackup;
 FileModifyAndClose;
 ReadLn;
End.

Última edición por Casimiro Notevi fecha: 09-03-2015 a las 23:49:43.
Responder Con Cita