如何调试应用程序 (exe) 冻结和崩溃?

逆向工程 拆卸 调试
2021-06-13 07:19:23

我有一个应用程序(我不知道源代码),每次失去焦点时都会冻结和崩溃(但音乐继续)。我尝试使用windbg 调试它,但它没有改变任何东西,而且我不知道如何正确记录冻结/崩溃。

我怎么知道发生了什么?在汇编指令或内存方面?

语境 :

  • 图形应用程序(Nvidia 驱动程序)
  • 在windows 7上创建的32位APP
  • 在 Windows 7 32 位上崩溃
  • 在 Windows 10 64 位上调试
  • 与硬件无关,在不同的计算机上以同样的方式崩溃
  • 取消关注应用程序 = 冻结,然后“无响应”,没有别的。当 Windows 发送报告时它会崩溃
  • 由调试器执行时无法崩溃,它只会冻结(即使进程管理器也无法关闭应用程序)

更新:Procdump + Windbg 分析(应用程序在 procdump 下没有崩溃,它只是在停止 procdump 进程后崩溃)

ADDITIONAL_XML: 1

OS_BUILD_LAYERS: 1

COMMENT:  
*** procdump.exe  -e -ma -t -w "name.exe"
*** Process termination

NTGLOBALFLAG:  0

PROCESS_BAM_CURRENT_THROTTLED: 0

PROCESS_BAM_PREVIOUS_THROTTLED: 0

APPLICATION_VERIFIER_FLAGS:  0

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 00000000
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD:  00001f64

PROCESS_NAME:  name.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION}  Breakpoint  A breakpoint has been reached.

EXCEPTION_CODE_STR:  80000003

STACK_TEXT:  
1d63fdb0 77131030     000002e4 06ff3150 00000010 ntdll!NtWaitForWorkViaWorkerFactory+0xc
1d63ff70 76abfa29     00b39e00 76abfa10 1d63ffdc ntdll!TppWorkerThread+0x2a0
1d63ff80 771475f4     00b39e00 26f0b456 00000000 kernel32!BaseThreadInitThunk+0x19
1d63ffdc 771475c4     ffffffff 77167350 00000000 ntdll!__RtlUserThreadStart+0x2f
1d63ffec 00000000     77130d90 00b39e00 00000000 ntdll!_RtlUserThreadStart+0x1b


SYMBOL_NAME:  ntdll!NtWaitForWorkViaWorkerFactory+c

MODULE_NAME: ntdll

IMAGE_NAME:  ntdll.dll

STACK_COMMAND:  dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~0s; .ecxr ; kb

FAILURE_BUCKET_ID:  BREAKPOINT_80000003_ntdll.dll!NtWaitForWorkViaWorkerFactory

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x86

OSNAME:  Windows 10

IMAGE_VERSION:  6.2.19041.662

FAILURE_ID_HASH:  {bb9287bd-f940-f1d0-c927-6d6da8a242a3}

Followup:     MachineOwner

更新 2 :似乎只有图形内容冻结。声音还行

更新 3:全屏时整个计算机冻结。无法访问任何其他窗口,WIN 键显示任务栏但即使使用 WIN+TAB 尝试切换应用程序时也没有任何反应

更新 4:似乎与 Nvidia 驱动程序有关

1个回答

我终于解决了它,但我真的不知道如何以及为什么。这是 nvidia 驱动程序,更改 gpu 解决了错误。使用nvidia gpu,将其添加到程序列表中即可解决。不管怎样,我想知道我们如何在没有用户交互的情况下解决这个问题