Ver Mensaje Individual
  #8  
Antiguo 14-04-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Vista la necesidad, publico la traducción del código publicado aquí.
Código Delphi [-]
procedure Replace(Buffer, Val, newVal: PBYTE; SizeBuffer, SizeVal: cardinal);
var
  n, i: cardinal;
begin
   for n:= 0 to SizeBuffer-1 do
   begin
      if PBYTE((cardinal(Buffer) + n))^ = Val^ then
      begin
         for i:= 1 to SizeVal-1 do
           if PBYTE(cardinal(Buffer)+n+i)^ <> PBYTE(cardinal(Val)+i)^ then  break;
         if i=sizeVal then
           CopyMemory(PBYTE(cardinal(Buffer)+n), newVal, SizeVal);
      end;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  MS: TMemoryStream;
begin
   MS:= TMemoryStream.Create;

   MS.LoadFromFile('project1.exe');
   Replace(MS.Memory, PBYTE(PCHAR('hola')), PBYTE(PCHAR('casa')), MS.Size, 4);
   MS.SaveToFile('prueba.exe');

   MS.destroy;

end;


Saludos.
Responder Con Cita