Does someone knows how it will work?

  1. Some wine/proton wizardry
  2. Gaming VM with GPU passthrough
  • Freakazoid@lemmy.ml
    link
    fedilink
    English
    arrow-up
    3
    ·
    36 minutes ago

    I prefer proper cracks like the good old groups CODEX/EMPRESS/CRY/Razor1911/SKIDROW/RELOADED/HOODLUM or modern Voices38

    I wonder how much do these kind of dunovo bypasses (hypervisor) affect performance?

    • irate944@piefed.social
      link
      fedilink
      English
      arrow-up
      42
      ·
      9 hours ago

      Hypervisor crack. It’s a new type of hack that can bypass denuvo, and it works for any game; unlike the old way where you need to crack each game independently

      The catch is that it needs kernel access to work, on Windows at least.

      • sp3ctr4l@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        7
        ·
        7 hours ago

        Welp, that would explain why seemingly every Denuvo game has been getting cracked, lately.

        I suspected somebody(s) had just figured out how to bypass the entire thing, but hadn’t had that confirmed untill now.

        • nutbutter@discuss.tchncs.de
          link
          fedilink
          English
          arrow-up
          13
          ·
          6 hours ago

          Actually there has been a cracker named voices something, who has been cracking a lot of denuvo games these past months.

          • sp3ctr4l@lemmy.dbzer0.com
            link
            fedilink
            English
            arrow-up
            10
            ·
            6 hours ago

            Yeah, that they’ve even been going back and cracking older games that shipped with Denuvo, but had not been cracked around their initiap release date… suggested to me that somebody figured out some method that applied more globally to Denuvo itself, as opposed to particular implementations of it.

  • Domi@lemmy.secnd.me
    link
    fedilink
    English
    arrow-up
    39
    ·
    11 hours ago

    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.

    • Mttw_@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      20
      arrow-down
      1
      ·
      edit-2
      5 hours ago

      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.caOP
        link
        fedilink
        English
        arrow-up
        6
        ·
        7 hours ago

        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
          link
          fedilink
          English
          arrow-up
          1
          ·
          5 hours 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
        link
        fedilink
        English
        arrow-up
        2
        ·
        5 hours ago

        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
          link
          fedilink
          English
          arrow-up
          1
          ·
          4 hours ago

          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
            link
            fedilink
            English
            arrow-up
            1
            ·
            3 hours ago

            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.

    • MalReynolds@slrpnk.net
      link
      fedilink
      English
      arrow-up
      23
      ·
      10 hours ago

      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
        link
        fedilink
        English
        arrow-up
        17
        arrow-down
        2
        ·
        edit-2
        5 hours 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.caOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      10 hours ago

      Kinda sucks for other architectures if only ryzen 7000 is supported

      Or if building proton for different architectures is feasible.

  • irate944@piefed.social
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    1
    ·
    10 hours ago

    If it makes some wine/proton wizardry, amazing! Else if it’s just like Windows, that shit will never enter my system

  • Zedd @lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    5
    arrow-down
    1
    ·
    11 hours ago

    It already works through heroic. I was able to get the cracked resident evil working the day after release.