首页
社区
课程
招聘
[求助]《另类挂钩-RING3数据包监视》应用的问题
发表于: 2013-7-29 18:45 3470

[求助]《另类挂钩-RING3数据包监视》应用的问题

2013-7-29 18:45
3470
目的:打开某个网址的时候自动添加referer来路

参考:原文【原创】另类挂钩-RING3数据包监视
http://bbs.pediy.com/showthread.php?t=81204

我想利用hook的时候添加referer 字段变大
发现hook后出现错误 C000009A STATUS_INSUFFICIENT_RESOURCES

代码如下
if (IoControlCode == AFD_SEND)
        {
                __try
                {
                        //从InputBuffer得到Buffer和Len
                        //访问AFD INFO结构,获得SEND或RECV的BUFFER信息
                        //这里可能是有问题的BUFFER,因此我们要加TRY EXCEPT

                        AfdInfo = (PAFD_INFO)InputBuffer ;
                        Buffer = AfdInfo->BufferArray->buf ;
                        ULONG Len = AfdInfo->BufferArray->len;

                        if (LookupSendPacket(Buffer , Len))
                        {
                               

                                pnewchar 是添加了referer的char *

                          
                                AfdInfo->BufferArray->buf =pnewchar;
                                AfdInfo->BufferArray->len=strlen(pnewchar);
                                InputBufferLength==strlen(pnewchar);

                        }
                       
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                        //MessageBoxA ( NULL, "fail", "RemoteDLL", MB_OK );   
                        return 0 ;
                }
        }

        __asm
        {
                push  OutputBufferLength
                push  OutputBuffer
                push  InputBufferLength
                push  InputBuffer
                push  IoControlCode
                push  IoStatusBlock
                push  ApcContext
                push  ApcRoutine
                push  Event
                push  FileHandle
                call  pNtDeviceIoControl
                mov    stat ,eax
        }

        //如果原始函数失败了(例如RECV无数据)
        if (!NT_SUCCESS(stat))
        {
                char szBuf[100]="\0";
                sprintf(szBuf, "Wrong:%08x\n",stat);
                return stat ;
               

//               这里的stat错误代码是C000009A  STATUS_INSUFFICIENT_RESOURCES

        }

请教该怎么办

猜测是否是因为AfdInfo->BufferArray->buf 的新的长度大于原来的 导致出错
测试如果新的长度<旧的长度 则不会出错

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//