liuguidong123
驱动牛犊
驱动牛犊
  • 注册日期2005-06-24
  • 最后登录2009-03-19
  • 粉丝0
  • 关注0
  • 积分227分
  • 威望27点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
阅读:1736回复:3

求助:禁止通过http协议下载

楼主#
更多 发布于:2007-03-23 10:28
  我想禁止通过http协议从网上下载电影。
我研究发现当下载时,都会向服务器发送一个请求,这个请求里面就包含此下载内容的URL。 我现在就想截获这个请求内容,并分析要下载的是否是电影文件。

现在碰到的问题是: 我无法获得TDI_SEND中的数据包, 请各位大侠指点。 如果做过这方面研究的欢迎一起讨论。谢谢!


我现在知道要发送的数据包在irp->mdladdress 里面,可我就是读不出来,郁闷。


我使用下面方法,每次运行到这就出错
if(NULL == (systemBuffer = ExAllocatePool(NonPagedPool, paramSend->SendLength+1))
{
  DbgPrint("Allocate memory error!");
  return STATUS_INSUFFICIENT_RESOURCES;
}
 
if(STATUS_SUCCESS != TdiCopyMdlToBuffer(irp->MdlAddress,0, systemBuffer,0,   paramSend->SendLength,0))
   DbgPrint("Copy data in mdl error!");
else
  DbgPrint("%s",systemBuffer);
            
  ExFreePool(systemBuffer);
  systemBuffer = NULL;
liuguidong123
驱动牛犊
驱动牛犊
  • 注册日期2005-06-24
  • 最后登录2009-03-19
  • 粉丝0
  • 关注0
  • 积分227分
  • 威望27点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-23 12:19
各位大侠有没有知道的, 麻烦告知一声
liuguidong123
驱动牛犊
驱动牛犊
  • 注册日期2005-06-24
  • 最后登录2009-03-19
  • 粉丝0
  • 关注0
  • 积分227分
  • 威望27点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-03-23 14:17
现在可以了, 我只不过把这个函数
TdiCopyMdlToBuffer(irp->MdlAddress,0, systemBuffer,0,   paramSend->SendLength,0))
最后一个参数0变为一个变量就可以了。(我本来不想得到它的值的,现在看来不要不行啊)
liuguidong123
驱动牛犊
驱动牛犊
  • 注册日期2005-06-24
  • 最后登录2009-03-19
  • 粉丝0
  • 关注0
  • 积分227分
  • 威望27点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-03-27 09:31
现在我可以得到数据了, 为什么有时会出错,有时又不出错? 要么报告BAD_POOL_CALLER 或者UNEXPECTED_KERNEL_MODE_TRAP  急急!
代码如下: 如果您有什么好的获得TDI_SEND中的数据的方法,请不吝赐教。 谢谢!

if(NULL == (systemBuffer=ExAllocatePool(NonPagedPool, paramSend->SendLength+1)))
{
    DbgPrint("Allocate memory error!");
    return STATUS_INSUFFICIENT_RESOURCES;
}

if(STATUS_SUCCESS != TdiCopyMdlToBuffer(irp->MdlAddress,0, systemBuffer,0, paramSend->SendLength,&CopiedBytes))
  DbgPrint("Copy data in mdl error!");
else
  DbgPrint("%s",systemBuffer);
                
ExFreePool(systemBuffer);
systemBuffer = NULL;
游客

返回顶部