hook (ws2_32.dll / send) 怎么修改封包后再发送???buf长度不变容易修改,长度变化了就不行了.
buf 长度不变的情况下很容易修改. 长度变了就不行了. buf用GetMem不允许修改长度
所以只有用自己变量替换buf, char数组/pchar都不行. 谁给个例子????
function StreamToText(Stream: TMemoryStream): String;var tls:TStringList;begin Result := ''; tls := TStringList.Create; try tls.LoadFromStream(Stream); Result := tls.Text; finally tls.Free; end;end;function TextToStream(Text: string): TMemoryStream;var tls:TStringList;begin Result := TMemoryStream.Create; tls := TStringList.Create; try tls.Text := Text; tls.SaveToStream(Result); finally tls.Free; end;end;function mysend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;var ss, temp: string; Stream, st:TMemoryStream;begin Stream := TMemoryStream.Create; Stream.Write(buf,len); Stream.Position := 0; ss := StreamToText(Stream); ss := StringReplace(ss, '*/*', '1/1', [rfReplaceAll, rfIgnoreCase]); //我目的是可以任意修改buf内容长度,*/*是例子测试的 //长度不变没问题. 如果换成 111/11111 就不行了,没办法GetMeM改buf长度 st := TextToStream(ss); st.Position := 0; st.Read(Buf, st.Size); Result := oldsend(s, Buf, st.Size, flags);end;