最近,笔者遇到一例程序自动退出,其原因不是程序自己退出,而是被外部其它程序结束了(特别是程序未签名很容易被安全软件给强杀),那么如何定位是哪个外部程序结束呢?
操作系统有一个特性叫Silent Process Exit,就可以监控程序自动退出,但是需要使用Windbg安装目录下的gflags.exe程序开启。
打开gflags.exe,切到Silent Process Exit页面,输入监控的进程名称(包含扩展名),以记事本为例notepad.exe,按TAB键,勾选EnableSilent Process Exit Monitoring,勾选Enable dump collection,勾选Enable notification,点击Apply按钮,配置如下图所示,本文的截图都是在Win7平台下截取。
打开记事本,使用任务管理器结束notepad.exe,在C:dump目录下就会生成notepad.exe和taskmgr.exe两个dump文件。
打开系统事件查看器,查看Windows日志下应用程序的事件,会有一个3001事件,也提示被任务管理器结束。