私服程序运行后自动关机?原因查出后笑到我了

背景

只要运行业务机器会自动关机
windows server 2012 打开mirserver2目录下的 server2a.exe和GameCenter.exe,等待5分钟左右机器会关机

检查

机器肯定没有人为关机,查看日志有记录关机 事件ID 6008 ,system日志看不到详细关机原因

为什么会关机?是执行shutdown进行关机的吗?将shutdown.exe重名为其他文件名,测试启动业务还是会关机

使用 Process Monitor 工具 追踪 程序path 和 shutdown 命令,启动业务一样关机,想先运行 shutdown /a 取消可能存在的关机计划,但是提示没有关机的计划任务且关机太迅速,无法进行保存日志

最后尝试使用 Windows Assessment and Deployment Kit (ADK) 工具抓关机的进程,好处是即使关机了,(-filemode 参数也把日志写入文件),只需要选择 Windows Performance Toolkit 这个组件,安装 wpr.exe 和 wpa.exe

Windows Assessment and Deployment Kit (ADK) 工具下载:https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install

执行命令 wpr -start GeneralProfile -filemode ,默认无输出,任务后台运行,启动程序等待关机,后开机查看

发现也没有保存日志,说明关机过程非常“彻底”,不是通过标准Windows关机流程执行的,可能绕过了正常的文件系统缓存回写机制,导致Windows Performance Recorder (WPR) 来不及将内存中的跟踪数据最终写入到硬盘上的 .etl 文件中

很奇怪,笨办法!

在程序的目录查找与“关机”、“重启”、“Shutdown”、“Restart”、“Timeout”等相关的配置项,发现程序有保护机制,怀疑业务是商业软件,怀疑是被软件的 “反盗版机制” 直接强制关机,在GameCenter.exe 进程查看有对应关机的逻辑

最后,破案了

盗版软件…

评论