快轉到主要內容

QEMU/KVM虛擬機繞過遊戲Easy Anti-Cheat的方法,隱藏KVM狀態

Linux系統 虛擬機與容器技術 QEMU Linux Windows
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

本文所載技術僅供為技術探討以及玩遊戲之用,並非支持使用外掛。有些遊戲明訂禁止使用虛擬機,操作風險自負。

本文Ivon試圖解決Linux系統的QEMU/KVM虛擬機,在Windows虛擬機玩遊戲下所遇到的防作弊偵測問題。

在GPU直通+採用Looking Glass改善虛擬機的遊戲性能後,會遇到遊戲反作弊程式偵測處於虛擬機環境而不給玩的情況。

目前最常見的反作弊系統是藍色熊貓「Easy Anti-Cheat」和「Battleye」,這些系統屬於核心級別的反作弊服務,禁掉遊戲會不給啟動。因此為繞過Easy Anti-Cheat偵測,需要對QEMU動一些手腳才能繞過對虛擬機的偵測。

經過對QEMU硬體訊息做修改之後,可成功執行《VRChat》與堡壘之夜《Fortnite》二款採用Easy Anti-Cheat的遊戲。

使用Battleye的虹彩六號《Tom Clancy’s Rainbow Six® Siege》成功啟動(單人模式)。

不過,採用自家防作弊技術的《Valorant》仍無法啟動。

1. 環境
#

  • Host OS:Arch Linux
  • Linux核心版本:6.4.7
  • Guest OS:Windows 11 22H2
  • CPU:Intel I5-7400
  • GPU:Intel UHD 630
  • GPU:Nvidia GTX-1050Ti
  • Host OS桌面環境:KDE Plasma X11
  • Host OS音訊伺服器:Pipewire
  • QEMU版本:8.0.3

參考 QEMU/KVM + Looking Glass一文的說明,將Nvidia GTX-1050Ti直通給Windows 11虛擬機,並設定好Looking Glass服務。

2. 修改虛擬機的硬體訊息
#

  1. 開啟Virt Manager(或是使用指令virsh edit),點選編輯 → 偏好設定 → 啟用XML編輯

  2. 開啟Windows 11虛擬機的XML頁面

  3. 找到<os></os>這段,填入以下內容,啟用smbios

<os>
<smbios mode="sysinfo"/>
</os>
  1. 執行以下指令,取得電腦主機板的訊息
sudo dmidecode --type bios
sudo dmidecode --type baseboard
sudo dmidecode --type system
  1. 回到Virt Manager,在<os></os>上方新增<sysinfo></sysinfo>段落,填入實體機主機板訊息。其實你不用真的如實填寫,只要這些欄位看起來像真的就行了,以下是我照抄網友提供的設定值。
<sysinfo type="smbios">
	<bios>
		<entry name="vendor">LENOVO</entry>
	</bios>
	<system>
		<entry name="manufacturer">Microsoft</entry>
		<entry name="product">Windows11</entry>
		<entry name="version">22H2</entry>
	</system>
	<baseBoard>
		<entry name="manufacturer">LENOVO</entry>
		<entry name="product">20BE0061MC</entry>
		<entry name="version">0B98401 Pro</entry>
		<entry name="serial">W1KS427111E</entry>
	</baseBoard>
	<chassis>
		<entry name="manufacturer">Dell Inc.</entry>
		<entry name="version">2.12</entry>
		<entry name="serial">65X0XF2</entry>
		<entry name="asset">40000101</entry>
		<entry name="sku">Type3Sku1</entry>
	</chassis>
	<oemStrings>
		<entry>myappname:some arbitrary data</entry>
		<entry>otherappname:more arbitrary data</entry>
	</oemStrings>
</sysinfo>
  1. 最後找到<features></features>這段,設定Hyper-V模式為custom,隱藏KVM狀態
<features>
...

	<acpi/>
	<apic/>
	<hyperv mode="custom">
		<relaxed state="on"/>
		<vapic state="on"/>
		<spinlocks state="on" retries="8191"/>
		<vpindex state="on"/>
		<runtime state="on"/>
		<synic state="on"/>
		<stimer state="on"/>
		<reset state="on"/>
		<vendor_id state="on" value="123456789123"/>
		<frequencies state="on"/>
	</hyperv>
	<kvm>
		<hidden state="on"/>
	</kvm>
	<vmport state="off"/>
	<smm state="on"/>
	<ioapic driver="kvm"/>

...
</features>
  1. 試著開機,安裝含有Easy Anti-Cheat的遊戲試試吧。

3.其他繞過Easy Anti-Cheat偵測的方法
#

有些玩家提出對QEMU本身打patch再重新編譯來繞過偵測的作法,例如 lexi-src/spoofed-qemu還有 zhaodice/qemu-anti-detection,後者宣稱只有Vanguard和Roblex的繞不過去。

不過我不喜歡這種作法,因為手動編譯QEMU耗時又容易失敗。

參考資料
#

相關文章

如何在Windows虛擬機玩遊戲 ~ Linux QEMU/KVM雙GPU直通 + Looking Glass安裝過程
Linux系統 虛擬機與容器技術 GPU Passthrough QEMU Linux Windows
用RDP+ZeroTier存取遠端Linux的Windows虛擬機的桌面
Linux系統 虛擬機與容器技術 Remote Desktop Windows Linux ZeroTier QEMU
在Linux安装Windows 11 QEMU虛擬機時啟用Secure Boot和TPM 2.0
Linux系統 虛擬機與容器技術 Windows QEMU Libvirt

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。