this post was submitted on 08 Jun 2026
244 points (98.8% liked)

Piracy: ꜱᴀɪʟ ᴛʜᴇ ʜɪɢʜ ꜱᴇᴀꜱ

69544 readers
67 users here now

⚓ Dedicated to the discussion of digital piracy, including ethical problems and legal advancements.

Rules • Full Version

1. Posts must be related to the discussion of digital piracy

2. Don't request invites, trade, sell, or self-promote

3. Don't request or link to specific pirated titles, including DMs

4. Don't submit low-quality posts, be entitled, or harass others



Loot, Pillage, & Plunder

We heartily recommend visiting the free port of freemediaheckyeah (aka FMHY) while you sail the high seas, for all the freshest links the ocean has to offer.

📜 c/Piracy Wiki (Community Edition):

🏴‍☠️ Other communities

FUCK ADOBE!

Torrenting/P2P:

Gaming:


💰 Please help cover server costs.

Ko-Fi Liberapay
Ko-fi Liberapay

founded 3 years ago
MODERATORS
 

Does someone knows how it will work?

  1. Some wine/proton wizardry
  2. Gaming VM with GPU passthrough
you are viewing a single comment's thread
view the rest of the comments
[–] domi@lemmy.secnd.me 59 points 2 weeks ago (5 children)

According to their now deleted Reddit account, it will use a custom Proton build on Intel and Zen 4 CPUs. For every other CPU you will need a kernel module.

[–] MalReynolds@slrpnk.net 35 points 2 weeks ago* (last edited 2 weeks ago) (2 children)

you will need a kernel module.

Yeah, Nah. That's a nope, especially given it can be done in proton. Also, updated Denuvo in 3.2.1...

Denuvo, just say no.

[–] Mttw_@lemmy.dbzer0.com 22 points 2 weeks ago* (last edited 2 weeks ago)

No it cannot be done with proton alone. Proton/wine is only a translation layer: if a program makes cpuid calls, proton/wine cannot intercept them because cpuid is executed directly on hardware silicon.

[–] mecen@lemmy.ca 1 points 2 weeks ago (1 children)

If kernel module is foss it can be checked

[–] MalReynolds@slrpnk.net 2 points 2 weeks ago

Fair cop.

Still no to Denuvo, any studio using it should be spanked.

[–] Mttw_@lemmy.dbzer0.com 33 points 2 weeks ago* (last edited 2 weeks ago) (2 children)

Correction: usermode is only supported by zen4 (or newer) and intel Ivy Bridge (or newer).

The reason is pretty simple: only from those generations onwards a new instruction was added (cpuid faulting) which is executed in the hardware itself, old generations simply lacks the silicon for it.

cpu faulting is used to trap usermode cpuid calls and can be used to return spoofed values, without needing an hypervisor.

[–] mecen@lemmy.ca 14 points 2 weeks ago (1 children)

If ivy bridge then from 3 gen which means pretty much any Intel made from 2012.

But for AMD from 7000 series which means CPU from 2022.

It sucks to be AMD user.

[–] Mttw_@lemmy.dbzer0.com 6 points 2 weeks ago

yeah, more on that: linux kernel has support for cpuid faulting for supported intel cpus since 2017, while amd since only last year. Not sure why amd was slower on this.

[–] kkj@lemmy.dbzer0.com 3 points 2 weeks ago (1 children)

I wonder if the new 5800X3D will support it. I'd give it maybe a 1% chance. I doubt they changed all that much. Sure would be nice for people on AM4, though.

[–] Mttw_@lemmy.dbzer0.com 5 points 2 weeks ago (1 children)

No, 5800x3d is zen3 sadly.

But you can actually test it with a small python script:

# docs: https://man.archlinux.org/man/arch_prctl.2
import ctypes
import errno
import mmap
import os
import signal
import subprocess
import sys

SYS_arch_prctl = 158
ARCH_SET_CPUID = 0x1012

libc = ctypes.CDLL(None, use_errno=True)
libc.syscall.restype = ctypes.c_long

def arch_set_cpuid(enabled: bool) -> None:
    rc = libc.syscall(SYS_arch_prctl, ARCH_SET_CPUID, 1 if enabled else 0)
    if rc != 0:
        e = ctypes.get_errno()
        raise OSError(e, os.strerror(e))

def make_cpuid_stub():
    # push rbx
    # xor eax, eax
    # cpuid
    # pop rbx
    # ret
    code = b"\x53\x31\xc0\x0f\xa2\x5b\xc3"
    mm = mmap.mmap(
        -1,
        len(code),
        flags=mmap.MAP_PRIVATE | mmap.MAP_ANONYMOUS,
        prot=mmap.PROT_READ | mmap.PROT_WRITE | mmap.PROT_EXEC,
    )
    mm.write(code)
    addr = ctypes.addressof(ctypes.c_char.from_buffer(mm))
    func = ctypes.CFUNCTYPE(None)(addr)
    func._mm = mm
    return func

def child():
    cpuid = make_cpuid_stub()

    print("Trying normal CPUID...")
    cpuid()
    print("Normal CPUID worked.")

    try:
        arch_set_cpuid(False)
    except OSError as e:
        if e.errno == errno.ENODEV:
            print("CPU does not support CPUID faulting.")
            return 2
        raise

    print("CPUID disabled for this thread. Calling CPUID again...")
    cpuid()  # should SIGSEGV -11 if faulting is supported
    print("Unexpected: CPUID did not fault.")
    return 0

if __name__ == "__main__":
    if len(sys.argv) > 1 and sys.argv[1] == "child":
        raise SystemExit(child())

    p = subprocess.run([sys.executable, __file__, "child"], text=True)
    print(f"child exit code: {p.returncode}")

    if p.returncode == -signal.SIGSEGV:
        print("Result: CPUID faulting is supported and worked.")
    elif p.returncode == 2:
        print("Result: CPUID faulting is not supported by the hardware.")
    else:
        print("Result: test did not complete cleanly.")
[–] kkj@lemmy.dbzer0.com 1 points 2 weeks ago (1 children)

I was referring to AMD bringing the 5800X3D out of retirement. They said that they redesigned it. It's probably just moving the cache under the CPU like on Zen5 3D, but I feel like there's a very slight chance.

[–] BoyetLeonantus@sh.itjust.works 2 points 2 weeks ago

They just adapted it to their current fabrication processes afaik, everything else should be exactly the same as the old ones.

[–] mecen@lemmy.ca 4 points 2 weeks ago* (last edited 2 weeks ago)

Kinda sucks for other architectures if only ryzen 7000 is supported

Or if building proton for different architectures is feasible.

[–] mecen@lemmy.ca 1 points 2 weeks ago (1 children)

Normal hypervisor bypass on windows also requires AMD zen 4 or Intel ivy bridge?

[–] Mttw_@lemmy.dbzer0.com 1 points 2 weeks ago

no, windows hypervisor bypasses run with hypervisor. The only requirement is virtualization support, any modern cpu that is capable of running the game at all should support it.

[–] Draconic_NEO@lemmy.dbzer0.com 1 points 1 week ago

Hopefully the Kernel module is still better than the hoops you need to jump through to set it up on Windows.