首页
社区
课程
招聘
[求助]蓝屏DUMP信息 求助
发表于: 2010-7-9 17:10 4925

[求助]蓝屏DUMP信息 求助

2010-7-9 17:10
4925
nt!RtlpBreakWithStatusInstruction:
818f1514 cc              int     3
kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

KERNEL_MODE_EXCEPTION_NOT_HANDLED (8e)
This is a very common bugcheck.  Usually the exception address pinpoints
the driver/function that caused the problem.  Always note this address
as well as the link date of the driver/image that contains this address.
Some common problems are exception code 0x80000003.  This means a hard
coded breakpoint or assertion was hit, but this system was booted
/NODEBUG.  This is not supposed to happen as developers should never have
hardcoded breakpoints in retail code, but ...
If this happens, make sure a debugger gets connected, and the
system is booted /DEBUG.  This will let us see why this breakpoint is
happening.
Arguments:
Arg1: c0000005, The exception code that was not handled
Arg2: 857903ca, The address that the exception occurred at
Arg3: 87c37980, Trap Frame
Arg4: 00000000

Debugging Details:
------------------

*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: kernel32!pNlsUserInfo                         ***
***                                                                   ***
*************************************************************************
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: kernel32!pNlsUserInfo                         ***
***                                                                   ***
*************************************************************************

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx"

FAULTING_IP:
ndis!ndisMSendCompleteNetBufferListsInternal+64
857903ca 8901            mov     dword ptr [ecx],eax

TRAP_FRAME:  87c37980 -- (.trap 0xffffffff87c37980)
ErrCode = 00000002
eax=849d01c0 ebx=856fc000 ecx=00000000 edx=00000000 esi=00000000 edi=00000000
eip=857903ca esp=87c379f4 ebp=87c37a14 iopl=0         nv up ei pl zr na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010246
ndis!ndisMSendCompleteNetBufferListsInternal+0x64:
857903ca 8901            mov     dword ptr [ecx],eax  ds:0023:00000000=????????
Resetting default scope

DEFAULT_BUCKET_ID:  CODE_CORRUPTION

BUGCHECK_STR:  0x8E

PROCESS_NAME:  themida.exe

CURRENT_IRQL:  2

LAST_CONTROL_TRANSFER:  from 819062d7 to 818f1514

STACK_TEXT:  
87c37104 819062d7 00000003 25e61612 00000000 nt!RtlpBreakWithStatusInstruction
87c37154 81906dbd 00000003 87c37980 00000000 nt!KiBugCheckDebugBreak+0x1c
87c37520 81906163 0000008e c0000005 857903ca nt!KeBugCheck2+0x66d
87c37540 8186f5a0 0000008e c0000005 857903ca nt!KeBugCheckEx+0x1e
87c37910 8189163a 87c3792c 00000000 87c37980 nt!KiDispatchException+0x1a9
87c37978 818915ee 87c37a14 857903ca badb0d00 nt!CommonDispatchException+0x4a
87c3798c 818d577e 00000ff0 00000000 00000000 nt!Kei386EoiHelper+0x186
87c37a14 856c54f1 83e3c0e8 849d01c0 00000000 nt!MmResourcesAvailable+0x30
87c37a28 890dc0a2 846ea6b8 849d01c0 00000000 ndis!NdisFSendNetBufferListsComplete+0x1a
87c37a4c 857904dd 846a3d60 849d01c0 00000000 pacer!PcFilterSendNetBufferListsComplete+0xba
87c37a6c 856ee36e 83e3c0e8 849d01c0 00000000 ndis!NdisMSendNetBufferListsComplete+0x70
87c37aa0 857905ac 83e3c0e8 849d01c0 00000000 ndis!ndisMLoopbackNetBufferLists+0x119
87c37acc 856c5585 83e3c0e8 849d01c0 00000000 ndis!ndisMSendNBLToMiniport+0x9c
87c37aec 856c55a8 849d01c0 849d01c0 00000000 ndis!ndisFilterSendNetBufferLists+0x8b
87c37b04 890dc45f 846ea6b8 849d01c0 00000000 ndis!NdisFSendNetBufferLists+0x18
87c37b80 856c5638 846a3d60 849d01c0 00000000 pacer!PcFilterSendNetBufferLists+0x233
87c37b9c 8579064a 849d01c0 849d01c0 00000000 ndis!ndisSendNBLToFilter+0x87
87c37bc0 97315b91 846ec450 849d01c0 00000000 ndis!NdisSendNetBufferLists+0x4f
87c37c2c 818f5053 849fddc0 848f3a30 848f3a30 Firewall6!FirewallDeceiveControl+0x1d1 [d:\firewall6\firewall.c @ 319]
87c37c44 81a85515 849135a0 848f3a30 848f3aa0 nt!IofCallDriver+0x63
87c37c64 81a85cba 849fddc0 849135a0 0042bc00 nt!IopSynchronousServiceTail+0x1d9
87c37d00 81a6f98e 849fddc0 848f3a30 00000000 nt!IopXxxControlFile+0x6b7
87c37d34 81890a7a 00000028 00000000 00000000 nt!NtDeviceIoControlFile+0x2a
87c37d34 77b89a94 00000028 00000000 00000000 nt!KiFastCallEntry+0x12a
0012fdf4 77b88444 7700c2a3 00000028 00000000 ntdll!KiFastSystemCallRet
0012fdf8 7700c2a3 00000028 00000000 00000000 ntdll!ZwDeviceIoControlFile+0xc
0012fe58 004012f1 00000028 00222000 0042bccc kernel32!DeviceIoControl+0x14a
WARNING: Stack unwind information not available. Following frames may be wrong.
0012ff48 00402299 00000001 001a0b50 001a0bb8 themida+0x12f1
0012ff88 77024911 7ffd5000 0012ffd4 77b6e4b6 themida+0x2299
0012ff94 77b6e4b6 7ffd5000 77a84665 00000000 kernel32!BaseThreadInitThunk+0xe
0012ffd4 77b6e489 004021b0 7ffd5000 00000000 ntdll!__RtlUserThreadStart+0x23
0012ffec 00000000 004021b0 7ffd5000 00000000 ntdll!_RtlUserThreadStart+0x1b

STACK_COMMAND:  kb

CHKIMG_EXTENSION: !chkimg -lo 50 -d !ndis
    857905fb-857905ff  5 bytes - ndis!NdisSendNetBufferLists
        [ 8b ff 55 8b ec:e9 60 4c b8 11 ]
5 errors : !ndis (857905fb-857905ff)

MODULE_NAME: Firewall6

IMAGE_NAME:  Firewall6.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  4c36d8ca

FOLLOWUP_NAME:  MachineOwner

MEMORY_CORRUPTOR:  PATCH_Firewall6

FAILURE_BUCKET_ID:  MEMORY_CORRUPTION_PATCH_Firewall6

BUCKET_ID:  MEMORY_CORRUPTION_PATCH_Firewall6

Followup: Mac

源码:

                                                                               
                                                                发送部分:                  
                                                                                        pMdl = NdisAllocateMdl(MySendProtocolBindingContext,//那么这个也是对的 pFilter->FilterHandle
                                                                                        pArpPacket,
                                                                                        PacketSize);
                                                                                        ASSERT(pMdl!=NULL);
                                                                                       
                                                                                          pNetBufferList = NdisAllocateNetBufferAndNetBufferList(
                                                                                          SendNetBufferListPool,//这是初始化时候得到的一个参数,见Init();
                                                                                          0, //Request control offset delta
                                                                                          0,           // back fill size
                                                                                          pMdl,
                                                                                          0,          // Data offset
                                                                                          PacketSize);
                                                                                          
                                                                                               
                                                                                                  ((PRECV_RSVD)(pNetBufferList->ProtocolReserved))->Mien=8;
                                                                                                  SendFlags |= NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK;
                                                                                                  NdisSendNetBufferLists(
                                                                                                  MySendProtocolBindingContext,//这个是对的。相当于 pFilter->FilterHandle(ndis中的Filter例子中)
                                                                                                  pNetBufferList,
                                                                                                  NDIS_DEFAULT_PORT_NUMBER,
                                                                                                  SendFlags);       
                                                                                                  
                                                                                                        //   ExFreePool(pArpPacket);

COMPLETE部分:(调试器看了一下,还没有到这那)

if(  ((PRECV_RSVD)(NetBufferLists->ProtocolReserved))->Mien==9||((PRECV_RSVD)(NetBufferLists->ProtocolReserved))->Mien==8)
{
        KdPrint(("Send Complete MyPacket!!!!\n"));
       
       
       
        MyFreePacket(NetBufferLists);
        return;
}

void MyFreePacket(PNET_BUFFER_LIST p)
{
        ULONG BufferLength;
        PUCHAR pCopyData;
        PMDL pMdl;
       
        pMdl = NET_BUFFER_FIRST_MDL(NET_BUFFER_LIST_FIRST_NB(p));
        if(pMdl == NULL)
        {
                return;
        }
        NdisQueryMdl(
                pMdl,
                (PVOID *)&pCopyData,
                &BufferLength,
                NormalPagePriority);
        if(pCopyData != NULL)
        {
                NdisFreeMdl(pMdl);
        }
        NdisFreeNetBufferList(p);
       
}

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
加上 __try  __finally   或  __try  __except 语句
2010-7-11 11:36
0
游客
登录 | 注册 方可回帖
返回
//