c – 在没有源代码的情况下调试/绕过BSOD
你好,祝你好运.
需要一点帮助: 情况: 目标: 问题: >没有可用的源代码或技术支持.没有任何帮助,没有其他人会解决问题. >即使没有刷新,登录到文件也会导致显着减速,因此系统BSOD会丢失日志的所有最后内容. 题: Minidump分析(WinDBG): Loading User Symbols Loading unloaded module list ........... Unable to load image nv4_disp.dll,Win32 error 0n2 *** WARNING: Unable to verify timestamp for nv4_disp.dll *** ERROR: Module load completed but symbols could not be loaded for nv4_disp.dll ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* Use !analyze -v to get detailed debugging information. BugCheck 1000008E,{c0000005,bd0a2fd0,b0562b40,0} Probably caused by : nv4_disp.dll ( nv4_disp+90fd0 ) Followup: MachineOwner --------- 0: kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* KERNEL_MODE_EXCEPTION_NOT_HANDLED_M (1000008e) 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: bd0a2fd0,The address that the exception occurred at Arg3: b0562b40,Trap Frame Arg4: 00000000 Debugging Details: ------------------ EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx" referenced memory at "0x%08lx". The memory could not be "%s". FAULTING_IP: nv4_disp+90fd0 bd0a2fd0 39b8f8000000 cmp dword ptr [eax+0F8h],edi TRAP_FRAME: b0562b40 -- (.trap 0xffffffffb0562b40) ErrCode = 00000000 eax=00000808 ebx=e37f8200 ecx=e4ae1c68 edx=e37f8328 esi=e37f8400 edi=00000000 eip=bd0a2fd0 esp=b0562bb4 ebp=e37e09c0 iopl=0 nv up ei pl nz na po nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010202 nv4_disp+0x90fd0: bd0a2fd0 39b8f8000000 cmp dword ptr [eax+0F8h],edi ds:0023:00000900=???????? Resetting default scope CUSTOMER_CRASH_COUNT: 3 DEFAULT_BUCKET_ID: DRIVER_FAULT BUGCHECK_STR: 0x8E LAST_CONTROL_TRANSFER: from bd0a2e33 to bd0a2fd0 STACK_TEXT: WARNING: Stack unwind information not available. Following frames may be wrong. b0562bc4 bd0a2e33 e37f8200 e37f8200 e4ae1c68 nv4_disp+0x90fd0 b0562c3c bf8edd6b b0562cfc e2601714 e4ae1c58 nv4_disp+0x90e33 b0562c74 bd009530 b0562cfc bf8ede06 e2601714 win32k!WatchdogDdDestroySurface+0x38 b0562d30 bd00b3a4 e2601008 e4ae1c58 b0562d50 dxg!vDdDisableSurfaceObject+0x294 b0562d54 8054161c e2601008 00000001 0012c518 dxg!DxDdDestroySurface+0x42 b0562d54 7c90e4f4 e2601008 00000001 0012c518 nt!KiFastCallEntry+0xfc 0012c518 00000000 00000000 00000000 00000000 0x7c90e4f4 STACK_COMMAND: kb FOLLOWUP_IP: nv4_disp+90fd0 bd0a2fd0 39b8f8000000 cmp dword ptr [eax+0F8h],edi SYMBOL_STACK_INDEX: 0 SYMBOL_NAME: nv4_disp+90fd0 FOLLOWUP_NAME: MachineOwner MODULE_NAME: nv4_disp IMAGE_NAME: nv4_disp.dll DEBUG_FLR_IMAGE_TIMESTAMP: 4e390d56 FAILURE_BUCKET_ID: 0x8E_nv4_disp+90fd0 BUCKET_ID: 0x8E_nv4_disp+90fd0 Followup: MachineOwner 解决方法nv4_disp+90fd0 bd0a2fd0 39b8f8000000 cmp dword ptr [eax+0F8h],edi 这是重要的部分.看看这个,最有可能的是eax无效,因此试图访问无效的内存地址. 您需要做的是将nv4_disp.dll加载到IDA(您可以获得免费版本),检查IDA加载nv4_disp的图像库并点击“g”到转到地址,尝试将90fd0添加到IDA正在使用的图像库中,它应该直接指向违规指令(取决于部分结构). 从这里您可以分析控制流程,以及如何设置和使用eax.如果你有一个好的内核级调试器,你可以在这个地址上设置一个断点并试着让它命中. 分析这个函数,你应该试着找出函数的功能,eax在那一点上指向的是什么,它实际指向的是什么,以及为什么.这是困难的部分,是逆向工程的难点和技巧的重要组成部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |