11-06-2011, 10:56 AM
وعليكم السلام ورحمة الله
جرب:
و:
بالتوفيق.
جرب:
PHP كود :
procedure PatchBytes(FileTarget: string; Value: String; Offset: LongInt; IsHex: Boolean = True; MakeBackup: Boolean = True);
var
EXEStream: TMemoryStream;
Buf: String;
begin
SetLength(Buf, Length(Value) div 2);
if IsHex then
HexToBin(PChar(Value), @Buf[1], Length(Value))
else Buf := Value;
EXEStream := TMemoryStream.Create;
try
EXEStream.LoadFromFile(FileTarget);
if MakeBackup then
EXEStream.SaveToFile(ChangeFileExt(FileTarget, '.bak'));
EXEStream.Seek(Offset, 0);
EXEStream.WriteBuffer(Buf[1], Length(Buf));
EXEStream.SaveToFile(FileTarget);
finally
EXEStream.Free;
end; // try
end;
PHP كود :
procedure PatchBytes(FileTarget: string; Value: String; Offset: LongInt; MakeBackup: Boolean = True);
var
EXEStream: TMemoryStream;
Bytes: LongWord;
I: Integer;
begin
EXEStream := TMemoryStream.Create;
try
EXEStream.LoadFromFile(FileTarget);
if MakeBackup then
EXEStream.SaveToFile(ChangeFileExt(FileTarget, '.bak'));
EXEStream.Seek(Offset, 0);
I := 1;
while I < Length(Value) do begin
Bytes := StrToInt('$'+Value[I] + Value[I+1]);
Inc(I, 2);
EXEStream.WriteBuffer(Bytes, 1);
end;
EXEStream.SaveToFile(FileTarget);
finally
EXEStream.Free;
end; // try
end;

