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