「2023.007|CN」Issues 系列: WSL 中使用 Win-KeX 连接 Kali 时界面模糊问题

问题详述

  • WSL 的子系统中包含微软官方提供的 Kali 子系统,并支持通过 Win-KeX 连接到 Kali 的 GUI 界面
  • 通过 Win-KeX 连接 Kali 的 GUI 界面有 3 种模式
    • Enhanced Mode
    • Seamless Mode
    • Windows Mode: 默认模式
  • 经过尝试我认为默认模式 Windows Mode 的操作体验最好
  • 但通过 Windows Mode 连接 Kali 的 GUI 界面后,显示非常模糊,尤其使用某些工具如 BurpSuite 时界面文字更是难以看清楚。尝试在 Kali 内部调节分辨率也无法解决。

相关信息

网上同样有人遇到并指出这个问题的

  • Win-Kex Screen Resolution: 指出了问题原因,并提供了一种解决方法
  • Win-KEX Resolution: Kali官方论坛里网友的提问,截至写这篇文章时没有人回复

问题分析

  1. Win-Kex Screen Resolution > Answer #1 中提出,可以通过将Settings > Display > Scale & layout > Scale 设置为 100% 来解决,这样确实可以使 Kali 的 GUI 变得清晰,但是也改变了主系统的 Scale,对某些用户会产生负面作用,即如果用户使用的是高清分辨率(如2K及以上)的显示器,则窗口、文字会变得非常小,很难看清。
  2. Win-Kex Screen Resolution > Answer #2 给出了解决思路,作者任务 GUI 渲染是通过 win-kex-win-x64 在 Windows 主系统中的 exe 文件实现的,所以只要找到并修改这个 exe 的 High DPI Settings 即可。但作者后来也发现,他找不到 win-kex-win-x64 在 Windows 主系统中的 exe 文件,只有 Kali 子系统中的 \\wsl.localhost\kali-linux\usr\lib\win-kex\TigerVNC

Answer #1Answer #2 都没有很好的解决问题,但是它们为我们最终解决问题提供了很好的思路。

问题解决

让我们按照 Answer #2 中的思路继续寻找答案,即 找到并修改 Windows 主系统中的与渲染 Kali 子系统 GUI 相关的 exe 程序,并修改它的 DPI 设置。或者直接 找到并修改 启动 Kali 子系统的相关的 exe 程序,并修改它的 DPI 设置。通过后者我们成功了。

通过 WSL 文档可以了解到,在 Windows 主系统的 CMD / PowerShell 中可以通过执行 kali 来启动 kali 子系统,而 kali 即为 kali.exe 在 CMD / PowerShell 中的省略形式。 kali.exe 其实对应的是位于系统环境变量 Path 中的某一个路径下的 exe 文件,如下图:

让我们来找到 kali.exe 的路径,使用 Get-Command -ShowCommandInfo kali 命令即可

接着通过 Explorer 打开 kali.exe 所在文件夹,接着:

  1. 右键单击 kali.exe 选择弹出菜单中的 Properties
  2. Compatibility 选项卡, Change high DPI Settings
  3. 在弹出的子窗口中选择 User this settings to fix scaling problems for this program instead of the one in settings

如下图

细心的读者可能发现上图中 kali.exe 的文件 SizeO bytes,这没问题,不会影响这种解决方法的可行性

接着在 kali 子系统中执行 kex --wtstart 启动 kex Windows Mode 即可得到清晰的 Kali GUI,且能够自由切换 Kali GUI 的窗口大小(GUI启动后为默认为全屏显示,通过按 F8 弹出的菜单即可退出全屏),显示分辨率也可以自适应窗口大小改变(kex 其他两种 Mode 无法自适应)。