All pastes #780417 Raw Edit

Sanchez

public text v1 · immutable
·published 2007-11-18 15:55 UTC
rendered paste body
program loader;

uses
  Windows, Messages;

{$R Loader.RES}

var
  si : Startupinfo;
  pi : Process_Information;
  NewData : array[0..1] of byte = ($90,$90);
  NewDataSize : DWORD;
  Bytesread : DWORD;
  Olddata : array[0..1] of byte;
  

begin
 // ZeroMemory(@si,sizeof(si));
 // ZeroMemory(@pi,sizeof(pi));
 // FillChar(Si,Sizeof(si),0);
 // Si.cb:=Sizeof(si);

  NewDataSize := sizeof(newdata);
  IF CreateProcess(nil,'Example.exe',nil,nil,FALSE,
           Create_Suspended,nil,nil,si,pi) = true then

  begin
    ReadProcessMemory(pi.hprocess,Pointer($403CEA),@olddata,2,bytesread);
    if (olddata[0] = $75) and (olddata[1] = $19) then
    begin
      WriteProcessMemory(pi.hProcess, Pointer($403CEA), @NewData, NewDataSize, bytesread);
      ResumeThread(pi.hThread);
      CloseHandle(pi.hProcess);
      CloseHandle(PI.hThread);
    end else
    begin
      Messagebox(0,pchar('Bytes not found! Wrong version?...'),pchar('Error'),mb_iconinformation);
      TerminateProcess(PI.hProcess,0);
      CloseHandle(PI.hProcess);
      CloseHandle(PI.hThread);
    end;
  end;


end.