this slowpoke moves

EXE Change MZ MagicHeader

procedure ChangeMagicHeader(FileName: String);
var
        fno:            File;
        n:              Integer;
        tmp:            String;
        NewHeader:      String;
        MagicHeader:    String;
        ext:            String;
const
        EXE_EXTENSION:  String = '.exe';
begin
        NewHeader   := 'HP'; // HIER NUR ZWEISTELLIGE ASCIIS EINTRAGEN
        MagicHeader := 'MZ';
        ext := ExtractFileExt(FileName);
        ext := LowerCase(ext);
        
        if (FileName = '') or (ext <> EXE_EXTENSION) then begin
                MessageDlg('Erforderlicher Dateiname fehlt oder es handelt sich um keine .exe Datei', mtError, [mbOk], 0);
                Exit;
        end;

        tmp := MagicHeader;
        try
                AssignFile(fno, FileName);
                Reset(fno, 1);
                for n := 0 to (FileSize(fno) - Length(MagicHeader)) - 1 do begin
                        Application.ProcessMessages;
                        Seek(fno, n);
                        BlockRead(fno, MagicHeader[1], Length(MagicHeader));
                        if MagicHeader = tmp then begin
                                Seek(fno, n);
                                BlockWrite(fno, NewHeader[1], Length(NewHeader));
                                ShowMessagePos('MagicHeader wurde ersetzt!', 100, 100);
                        end;
                end;
                CloseFile(fno);
        except
         on EFOpenError do
        end;
end;
Beispiel :
procedure TForm1.Button1Click(Sender: TObject);
begin
        ChangeMagicHeader(Edit1.Text);
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate