Mttw_

joined 11 months ago
[–] Mttw_@lemmy.dbzer0.com 3 points 1 week ago

there's also bitmagnet, which is not a torrentio drop-in replacement, but it's a selfhostable public DHT scraper and indexer

[–] Mttw_@lemmy.dbzer0.com 3 points 1 month ago (1 children)

this one? you can search on github with fork:only tag to find all still existing repo/fork

[–] Mttw_@lemmy.dbzer0.com 1 points 1 month 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.

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

nope it doesnt, voices cracks use a similar method to old cpy cracks: they reverse engeneered denuvo hardware fingerprint generation, so the crack can generate a working fingerprint of any pc, skipping the "steam ownership" check. Denuvo checks still run, but it sees a "good" fingerprint so it doesnt crash the game.

Still it's not an easy task, denuvo is obfuscated like hell and requires a lot of knowledge and time to catch all the quirks.

[–] Mttw_@lemmy.dbzer0.com 5 points 1 month ago (2 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.")
[–] Mttw_@lemmy.dbzer0.com 6 points 1 month 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.

[–] Mttw_@lemmy.dbzer0.com 21 points 1 month ago* (last edited 1 month 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.

[–] Mttw_@lemmy.dbzer0.com 34 points 1 month ago* (last edited 1 month ago) (6 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.

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

You can't get lossless with any spotify mod. All spotify mods are capped at free account quality (128kbps iirc) because spotify api premium check happens server side.

Any mod that says otherwise is a scam at best, malware at worst.

Note: i'm only talking about spotify custom apk mods. Local lossless download tools are legit and can download lossless (eg votify) with a premium paid account.

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

yeah it's running fine for me, what errors are you getting? i dont have 2fa enabled though

maybe open an issue on the wrapper github repo

[–] Mttw_@lemmy.dbzer0.com 14 points 2 months ago

InsaneRamZes uploaded the full game (155gb) on rutracker org. I obv cant direcly link to it, but search bar is your friend :)

[–] Mttw_@lemmy.dbzer0.com 7 points 2 months ago (3 children)

Do you have a paid/premium apple music account? if yes it's easy and you can even download lossless from apple music: https://github.com/glomatico/gamdl#%EF%B8%8F-wrapper

view more: next ›