| ▲ | ohnoesjmr 17 hours ago | |||||||
The anti-cheat streams executable code into the client, and that code is mostly for detecting tampering with the game, injected modules, etc. Not sure they care about it running in an emulated environment. They do effectively allocate an executable memory region, copy the machine code that was streamed into it, and jump to it. I guess in this case the emulation is an actual vm, rather than "rewrite x86 instructions into arm" (don't know much about this subject, but assumed that was how rosetta worked) | ||||||||
| ▲ | mort96 17 hours ago | parent [-] | |||||||
Rosetta 2 rewrites x86 instructions into ARM, but it does this on the fly for generated instructions too. When you put x86 machine code into a buffer and then jump to execute it, Rosetta 2 dynamically translates those generated instructions into arm before executing them. At least that's what I gathered around the time it was released. It seems to hold up; JITed x86 applications work great under Rosetta 2. | ||||||||
| ||||||||