小
小小K
Unregistered / Unconfirmed
GUEST, unregistred user!
现有一个二进制文件,我要改变他其中的一小段内容,如 F1 D3 A8 00 F3 ...
我是用 TMemoryStream 把文件读进来再找地址修改写回去的。
问:
1、如何用 TMemoryStream 读文件4300h处的十六进制如 F1 D3 A8 00 F3 ...到EDIT框内显示?
2、读出来的十六进制要一一相加(要求相加的和得数为字节),我要把得数写到指定的某个字节位置上。
高手请出招,分数可以加,谢谢。
以下是我写回去的代码:
procedure TfrmMain.btnWriteClick(Sender: TObject);
var
i:Integer;
S:TMemoryStream;
begin
i:=$F1FF; // i> $ffffffff 溢出....
S:=TmemoryStream.Create;
S.LoadFromFile('bbb.exe');
S.Seek($4317,soFromBeginning);//移到指定位置处
S.write(i,2);//写入该数值
S.savetoFile('bbb.exe');//保存
S.Free;
end;
我是用 TMemoryStream 把文件读进来再找地址修改写回去的。
问:
1、如何用 TMemoryStream 读文件4300h处的十六进制如 F1 D3 A8 00 F3 ...到EDIT框内显示?
2、读出来的十六进制要一一相加(要求相加的和得数为字节),我要把得数写到指定的某个字节位置上。
高手请出招,分数可以加,谢谢。
以下是我写回去的代码:
procedure TfrmMain.btnWriteClick(Sender: TObject);
var
i:Integer;
S:TMemoryStream;
begin
i:=$F1FF; // i> $ffffffff 溢出....
S:=TmemoryStream.Create;
S.LoadFromFile('bbb.exe');
S.Seek($4317,soFromBeginning);//移到指定位置处
S.write(i,2);//写入该数值
S.savetoFile('bbb.exe');//保存
S.Free;
end;