-
-
[求助]《另类挂钩-RING3数据包监视》应用的问题
-
发表于: 2013-7-29 18:45 3473
-
目的:打开某个网址的时候自动添加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 的新的长度大于原来的 导致出错
测试如果新的长度<旧的长度 则不会出错
参考:原文【原创】另类挂钩-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 的新的长度大于原来的 导致出错
测试如果新的长度<旧的长度 则不会出错
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: