我想将
00000160h 00 00 10 00 00 40 00 00 00 00 10 00 00 10 00 00
中的            10 00 改成20 00 
该怎么办??

解决方案 »

  1.   

    我有用delphi写的客查看二进制文件的代码(简易的类似与ultraedit)
    现在不在身边,下班后可以给你
    如要,请留下mail
      

  2.   

    读文件,写文件呀。 
    TFileStream等等。
      

  3.   

    [email protected]谢谢你了~~~我打开的是exe文件啊~~!
    我要修改某个地址的内容~~不是编辑,是直接在程序中修改了~~
      

  4.   

    用二进制方式打开文件-写文件。地址就自己计算偏移量然后seek, write....
    --------------------------------------
    看见了么,
    那支蛾子,
    正飞向太阳,
    那就是我!
    --------------------------------------
      

  5.   

    exe文件应该不可以进行修改吧,
      

  6.   

    使用 FileRead、FileSeek、FileWrite 即可
      

  7.   

    f:= TFileStream.Create(...);
      f.Position:=...
      f.Write(...);
      f.Free;
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     AssignFile(...);
     Reset(...);
     Seek(...);
     BlockWrite(...);
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
      GetWindowThreadProcessID(...);
      ProcessHandle:= OpenProcess(...);
      WriteProcessMemory(...);足够啦,从流文件,到二进制文件,再到内存,我全贴了,要一送二;
    这些都是我源代码中的一部分,需要具体的再和我联系
      

  8.   

    以 16进制 显示所读的文件,不过这个主要是测试 readfileex,所以如果会很慢。var
        hFile: HWND;
        Buffer: array[0..16] of BYTE;
        lPOverlapped: POverlapped;
        FileSize: Cardinal;
        loopCount, loopCountII , i, j : Cardinal;
        lineStr: string;
        FileName: string;
    begin
        if Self.OpenDialog1.Execute then
        begin
            FileName := OpenDialog1.FileName;
        end
        else
        Exit;
        hFile := CreateFile(PChar(FileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,FILE_FLAG_OVERLAPPED);
        FileSize := GetFileSize(hFile,nil);
        loopCount := FileSize div 16;
        New(lPOverlapped);
        lPOverlapped^.Offset := 0;
        ZeroMemory(@Buffer,16);
        ProgressBar1.Max := loopCount;
        ProgressBar1.Step := 1;
        for i := 0 to loopCount - 1 do
        begin
            ReadFileEx(hFile,@Buffer,16,lPOverlapped,nil);
            lPOverlapped^.Offset := lPOverlapped^.InternalHigh + lPOverlapped^.Offset;
            lineStr := '';
            for j := 0 to 15 do
            begin
                if j = 0 then
                    lineStr := Format('%.2x',[Buffer[j]])
                else
                begin
                    if j in [2,4,6,8,10,12,14] then
                        lineStr := lineStr + Format(' %.2x',[Buffer[j]])
                    else
                        lineStr := lineStr + Format('%.2x',[Buffer[j]]);
                end;
            end;
            RichEdit1.Lines.Add(lineStr);
            ProgressBar1.StepIt;
        end;
        loopCountII := FileSize - 16*loopCount;
        ReadFileEx(hFile,@Buffer,FileSize - 16*loopCount,lPOverlapped,nil);
        lineStr := '';
        for j := 0 to loopCountII - 1 do
        begin
            lineStr := lineStr + Format('  %.4x',[Buffer[j]]);
        end;
        RichEdit1.Lines.Add(lineStr);
        Dispose(lPOverlapped);
        CloseHandle(hFile)
    end;