在网上看到了个一个关于截获程序封包的源代码,自己测试了下,可以截获程序的封包,但是他提供的源代码没有封包处理方面的内容,
源代码如下:
function MyRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
var
dwSize: cardinal;
begin
//这儿进行接收的数据处理
MessageBeep(1000); //简单的响一声
//调用直正的Recv函数
WriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);
Result := OldRecv(S, Buf, len, flags);
JmpCode.Address := @MyRecv;
WriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize);
LeaveCriticalSection(PD);
end;现在我知道BUF就是封包的内容,我应该怎么对比这个封包啊,比如说我想看看封包里面有没有包含‘DELPHI’这几个字符,我应该怎么作请高手们不要考虑的那么复杂,不要从什么还要解密封包啊之类的说起,就直接对比buf,应该怎么作,希望高手帮个忙含有一个问题就是len书上说是封包的长度啊,怎么我获取的长度在200000以上,可能吗?

解决方案 »

  1.   

    本来就要解析,数据包有自己的格式和编码方式,又不像EXE可以直接hex查看
    要分析的话,必须要反汇编原来的程序,许多外挂都是利用这个原理做成的
      

  2.   

    那怎么想别的拦截工具一样把数据包用16进制显式出来啊,就是BUF的内容
      

  3.   

    嗅探,你说的拦截工具是指ethreal一类的吧?那些都是用winpacp为基础做的
      

  4.   

    唉,难道高手的思想都这样啊,看过别人作的一个拦截工具,就可以对比BUF的内容,然后输出十六进制,大哥 ,这个应该不是很难吧,我现在的问题是取的包的内容长度和别人取的不一样,所以我才想知道,我应该怎么取出完整的数据包并且显示,我提问的时候就怕你们误解,又是解密封包啊,什么的,老实说,API HOOK就可以获得包的内容,并显示,可能是我对DELPHI不是很了解的原因,所以我做不到完全显示,所以我才来问的,郁闷