Denuvo needs inline self-modifying code support
- Dominant language
- C++
- Stars
- 8k
- Forks
- 351
- Avg merge
- 12h 31m
- Merged PRs (30d)
- 102
Description
Currently it crashes because of an invalid instruction.
The instruction stream (From Hatsune Miku Project DIVA Mega Mix+) starts as follows.
```asm
1569854b0 812d000000001896… sub dword [rel data_1569854ba], 0x1b519618 {0xa20f9090} // Modifies the next instruction
1569854ba a826 test al, 0x26 // Instruction modified
1569854bc 61 ??
```
The initial sub instruction in this block is modifying the code just after the instruction. Which turns it in to:
```asm
0x00000000 1 90 nop
0x00000001 1 90 nop
0x00000002 2 0fa2 cpuid
0x00000004 10 8105f2ffffff1896511b add dword [rip - 0xe], 0x1b519618
0x0000000e 1 c3 ret
```
The final add there modifying the code back to what it was before.
FEX need to have a generic (and fast) solution towards detecting something like this if we want any Denuvo Anti-Tamper games to work.
Contributor guide
Assessment
This issue has not been assessed yet.