function MySend(s: TSocket; var Buf:pointer; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;i:integer;
begin
//这儿进行发送的数据处理
i:=integer(buf) xor 255;
buf:=@i;
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S,buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;本意是想将buf指针所存放的数据的第一个字节与FFH进行异或处理,但实际得到的结果不是。

解决方案 »

  1.   


    (PByte(buf)^) := (PByte(buf)^)xor 255;
      

  2.   

    delphi7编译时提示left side cannot be assigned to.我将它改写成:
    function MyRecv(s: TSocket; var Buf:pointer; len, flags: Integer): Integer; stdcall;
    var
    dwSize: cardinal;i:byte;
    begin
    //这儿进行接收的数据处理
    i:=(PByte(buf)^) xor 255;
    buf:=@i;
    //调用直正的Recv函数
    WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);
    Result := OldRecv(S, Buf, len, flags);
    JmpCode.Address := @MyRecv;
    WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize);
    end;编译通过了,可是在调用由它生成的dll文件时,提示 "0x03777e60"指令引用的"0x49474552"内存.该内存不能为"read".