如何以十六进制打开,编辑和保存二进制文件?

解决方案 »

  1.   

    http://download.csdn.net/source/160432
      

  2.   

    我想以十六进制打开exe文件,把特定范围比如 123H-456H的每个字节做xor运算,
    然后保存.这样该怎么写?
    谢谢.
      

  3.   

    //参考如下代码,没有测试过procedure TForm1.Button1Click(Sender: TObject);
    var
      vMemoryStream: TMemoryStream;
      vFileName: string;
      vStart, vEnd: Integer;
      vBuffer: string;
      I: Integer;
    begin
      vFileName := 'c:\temp\temp.dat';
      vStart := $123;
      vEnd := $456;
      SetLength(vBuffer, vEnd - vStart + 1);
      vMemoryStream := TMemoryStream.Create;
      try
        vMemoryStream.LoadFromFile(vFileName);
        vMemoryStream.Seek(vStart, soFromBeginning);
        vMemoryStream.Read(vBuffer[1], Length(vBuffer));
        for I := 1 to Length(vBuffer) do
          vBuffer[I] := Chr(Ord(vBuffer[I]) xor $ff);
        vMemoryStream.Seek(vStart, soFromBeginning);
        vMemoryStream.Write(vBuffer[1], Length(vBuffer));
        vMemoryStream.SaveToFile(vFileName);
      finally
        vMemoryStream.Free;
      end;
    end;