在处理hook的返回的数据时出错,这个buf应该怎么取才能稳定。?

inseasoft 2007-12-01 06:38:04
下面是hook的发送代码
function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
tmpBuf: array of Byte;
i:integer;
outstr,CookieStr:string;
ds: TcopydataStruct ;
begin

try
Setlength(tmpBuf,len);
for i := 0 to len - 1 do
tmpBuf[i] := TByteArray(Buf)[i];
for i := Low(tmpBuf) to High(tmpBuf) do
outstr := outstr + chr(tmpBuf[i]));//这里经常出错,但是不是每次都错。都是报内存问题
。。。。
finally
end;

MessageBeep(2000); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;



那位大侠有对这个hook的返回buf操作的例子,不胜感谢
...全文
84 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
inseasoft 2007-12-02
  • 打赏
  • 举报
回复
搞定了,这是个老问题了,在delphi写dll时候如果要用到string类型就必须在uses中加入ShareMem,而且是第一位。贴出这段代码的完整部分,其中包括了向调用进程传递参数。

function MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
tmpBuf: array of Byte;
i:integer;
outstr,CookieStr:string;
ds: TcopydataStruct ;
begin

try
Setlength(tmpBuf,len+1);
for i := 0 to len - 1 do
tmpBuf[i] := TByteArray(Buf)[i];
for i := Low(tmpBuf) to High(tmpBuf)-1 do
outstr := outstr + char(tmpBuf[i]);
CookieStr := Trim(getAllCookie(outstr));
if (CallThreadID > 0) and (CookieStr<>'') then
begin
ds.cbData:= length(CookieStr)+1;
GetMem(ds.lpData,DS.cbData);
strcopy(DS.lpData,pchar(CookieStr));
sendMessage(CallThreadID,WM_GETCOOKIE,0,lparam(@DS));
freeandnil(ds);
end;

finally

end;

MessageBeep(2000); //简单的响一声
//调用直正的Send函数
WriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);
Result := OldSend(S, Buf, len, flags);
JmpCode.Address := @MySend;
WriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);
end;


写了个IE的插件,这个插件的用途是获取已经某个需要登录验证网站的数据。这样就需要已登录网站的cookie,本来取不需要这么麻烦可以通过webborws.document.cookie来获取。但是有些网站对cookie进行了什么设置无法用这个方法来获取。因此只能hook了。如果那位大哥大姐能够获取通过正常的接口来获取的cookie希望不吝赐教,毕竟这种方法太劳神。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧