首页 IT技术 游戏问题 查看内容

LOL LCU启动崩溃说明及解决办法

游戏问题 8027 0 2017-5-26 17:50

各位召唤师大家好,在最近我们逐步替换老客户端的过程中,有很多玩家反馈在启动新客户端(下称LCU)时会出现闪退的情况,腾讯和拳头的工程师就这个问题进行了排查和分析,现将目前所了解到的情况,引起这个问题的原因 ...

各位召唤师大家好,

在最近我们逐步替换老客户端的过程中,有很多玩家反馈在启动新客户端(下称LCU)时会出现闪退的情况,腾讯和拳头的工程师就这个问题进行了排查和分析,现将目前所了解到的情况,引起这个问题的原因以及解决方案作一个简单的梳理,希望可以让大家更加清楚如何解决相关Bug的问题。下文中有诸多技术术语,大家可选择直接跳过看后面的解决方案。

注:本文只针对LCU闪退作出说明,其他的游戏问题不在讨论范围内(比如选英雄后的黑屏等)。

问题表现

当玩家无论用TGP还是官方客户端启动LCU后,会出现弹出英雄联盟英文LOGO(League of Legends)后程序马上退出的问题。玩家看到的类似这样(注意是英文的LOGO):


如何确定你也是这个问题?

玩家可以通过查看以下日志来判断你存在的问题是否属于本文讨论的问题:
C:\Program Files\Tencent\League of Legends\英雄联盟LCU\Game\Logs\LeagueClient Logs\2017-05-15T15-43-32_6200_LeagueClientUx.log

注意,日志的路径和你安装客户端时选择的路径相关,另外目录下有很多日志文件,注意查看LeagueClientUx结尾的日志文件
打开日志文件后如果你发现类似这样的日志,证明你的客户端问题属于本文讨论范围:
|  ERROR| ClientWebSocketTransport: OpenSSL error: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed



问题原因

经过查证,简单来说导致这个问题原因是玩家的系统中存在一种或多种恶意软件,这种恶意软件会尝试在程序发起安全连接时替换掉合法的SSL安全证书。而LCU的安全机制保证了在SSL安全证书被替换后拒绝启动,所以造成了玩家所看到的闪退现象。

详细原理分析

LCU大厅是多进程的, LeagueClient.exe(以下简称Client)和LeagueClientUx.exe(以下简称Ux)是两个主要进程,其中Client启动时会搭建一个WebSocket服务器,等待Ux启动后连接上来,供之后的数据传输用。此WebSocket服务是建立在SSL连接基础之上的。
(有关SSL连接的步骤和操作系统根证书相关的内容,请自行搜索,本文附录中有简单介绍)
问题机器的Windows启动后会加载一个驱动(红色显示的):

该驱动会设置5个内核过滤器:

其中TcpFltnetfilter2可以过滤操作系统内所有TCP连接,木马在检测到有SSL连接时,会在其Server hello环节,替换掉传输过来的证书。
原本Client提供的证书是:

证书的使用组织为Riot Games,而木马加载后,Ux接收到的证书变成了:

证书名字为Sample CA 2,此证书是木马伪造的,可以看到证书的有效期与原证书完全一致。
同时在操作系统的根证书存储区,也可以看到一个木马作者自己签发的根证书:

将此根证书添加进操作系统的根证书存储区的效果是,浏览器在接收到伪造证书后,可以通过认证,然而Ux进程在校验服务器证书时,使用的是自己签发的CA证书
因此伪造的证书无法通过校验,导致Ux拒绝连接:
000003.845| ALWAYS| Trying to connect to app process.
000004.509|  ERROR| ClientWebSocketTransport: OpenSSL error: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
000004.509|  ERROR| Unable to connect to app process.
000004.509|   OKAY| Releasing browser process.
000004.509|   OKAY| Shutting down CEF.
000004.875|   OKAY| Exiting ux.


解决方案

解决这个问题有多个解决方案,需要玩家自行决定哪个方案更适合自己的情况。如果选择的方案修复不成功,可能需要选择其他方案进行尝试。

方案一

如果你的电脑里面本来安装了QQ电脑管家、金山毒霸等等的杀毒软件,请启用他们的“全盘查杀”功能(注意不要快速查杀),有一些恶意软件可以被这类杀毒软件清除。查杀后可以尝试启动LCU看是否还存在闪退。如果还是会闪退的话证明电脑系统里面还存在其他导致这个问题的恶意软件无法被上述的杀毒软件查杀。

方案二

电脑管家套件内有一个叫“系统急救箱”的功能,在普通病毒查杀无法清除的情况下,可以尝试这个功能里面的全面强力查杀,在一些案例里面这个功能可以帮助清除普通杀毒软件无法查杀的恶意软件,从而使LCU可以正常启动。这个方案有一些副作用,此功能有时候会把一些正常的软件查杀,所以需要谨慎使用。

方案三

这个方案是最保险但是最麻烦的,如果上述方案都无法查杀到问题的恶意软件,重装windows是最后而且最保险的方案。但我想强调一点是,在很多的案例里面恶意软件恰恰是来自于玩家安装的windows。市面上很多版本的盗版windows,生来就带有恶意软件,所以有些玩家不断重装这些有问题的windows系统都无法解决问题。所以我建议大家从微软的官方MSDN下载windows的安装包并用官方方法激活。

常见问答

问:如果我电脑系统有问题为什么老客户端没事,就新客户端事儿多?你们这是甩锅了吧
答:在上面的原理介绍里面已经提到过,新的客户端使用的技术和安全机制导致了对安全证书的依赖,可以说LCU对不安全的环境更加敏感,所以会出现老客户端没事,LCU就闪退的情况。出现闪退的问题,我们自己第一时间肯定是怀疑LOL的程序有问题,但经过多天的查证并且有很多玩家的配合,这些案例让我们比较有信心是恶意软件导致的闪退问题。

问:我发现windows注销再登入就可以用LCU了,我不用上面这么麻烦的方案可以么?
答:我们目前还不清楚为什么注销再登入windows会导致恶意软件的证书替换会失效,导致LCU可以暂时使用上,但你明知电脑里面有恶意软件,甚至可以监听你所有的网络连接,这样都不想办法杀一下么?你可以在网上查到这种恶意软件偷取各种银行密码、支付宝密码的案例比比皆是,还是安全点好。。。
问:你们会出一个LOL的版本修复这个问题么?
答:我们可能很难通过版本来解决系统中恶意软件的问题。

如果大家还有更多关于新客户端闪退的问题,我们可以在此贴下继续交流沟通。

转自LOL论坛

1

路过

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

  • 路过

    匿名