Detection Validation Pipeline GitHub ↗

One tick per check in the latest run. Taller ticks are known gaps, and red ticks failed.

Detection rules, tested on real logs.Then on what they miss.

A detection-as-code pipeline with a video game security focus. Every rule has to catch a real test on a disposable Windows machine, and this page rebuilds itself from the results of the latest run.

Status
Results match the record
Latest run
0813e4f
Finished
5 Nov 2026, 09:11 UTC
Tested against
A fake game and scripted traffic

Rules passing on real logs

10 of 10

Catch the attack and ignore normal activity.

Evasion variations caught

5 of 10

The misses are listed below, with reasons.

Normal scenarios that stay quiet

5 of 11

The rest set off at least one rule.

Results Elasticsearch agrees with

125 of 127

An independent engine, on the same logs.

The rules

01 / 06

Each rule runs on its own disposable Windows machine against a real test. To pass, it has to alert on the attack and stay quiet on normal activity.

Passes on real logs

PowerShell Launched With Encoded Command (Defender XDR)

T1059.001 · KQL
Reads
Sysmon process creation
Noisy scenarios
1 of 11
Elasticsearch agrees
Not compared
Passes on real logs

Game Loaded a System DLL From Outside the Windows Folder

T1574.001 · mod injection · SIGMA
Reads
Sysmon DLL load
Variations caught
1 of 2
Noisy scenarios
1 of 11
Elasticsearch agrees
14 of 15
Passes on real logs

Process Requested Write Access to Game Memory

T1055 · memory tampering · SIGMA
Reads
Sysmon process access
Variations caught
1 of 2
Noisy scenarios
1 of 11
Elasticsearch agrees
15 of 15
Passes on real logs

License Server Redirected Through the Hosts File

T1565.001 · license bypass · SIGMA
Reads
Sysmon process creation
Variations caught
1 of 2
Noisy scenarios
0 of 11
Elasticsearch agrees
15 of 15
Passes on real logs

Game Running From an Unofficial Build

T1554 · bootleg copy · SIGMA
Reads
Sysmon process creation
Variations caught
1 of 1
Noisy scenarios
1 of 11
Elasticsearch agrees
14 of 14
Passes on real logs

License Key Guessing From One Address

T1110 · license key guessing · SIGMA
Reads
License server log
Variations caught
1 of 2
Noisy scenarios
1 of 11
Elasticsearch agrees
15 of 15
Passes on real logs

One License Key Activated on Too Many Machines

T1078 · license key sharing · SIGMA
Reads
License server log
Variations caught
0 of 1
Noisy scenarios
1 of 11
Elasticsearch agrees
14 of 14
Passes on real logs

Command Shell Obfuscated With Environment Variable Substring

T1059.003 · SIGMA
Reads
Sysmon process creation
Noisy scenarios
0 of 11
Elasticsearch agrees
13 of 13
Passes on real logs

PowerShell Launched With Encoded Command

T1059.001 · SIGMA
Reads
Sysmon process creation
Noisy scenarios
1 of 11
Elasticsearch agrees
12 of 13
Passes on real logs

PowerShell Launched With Short Encoded Flag

T1059.001 · SIGMA
Reads
Sysmon process creation
Noisy scenarios
0 of 11
Elasticsearch agrees
13 of 13

What gets past them

02 / 06

Harmless variations of each game and license attack. Misses are recorded rather than hidden, and any change from the record fails the run.

What sets them off by mistake

03 / 06

Normal activity, scored against every rule. A rule that fires on normal behavior buries analysts in bad alerts.

A second opinion

04 / 06

Rules pass or fail on engines this project wrote, so the real logs also go into a real Elasticsearch, which runs the 9 Sigma rules after standard conversion. These are the results where the two disagree.

What real logs changed

05 / 06

Mistakes and surprises that only showed up on real logs and real tools. Each one links to its run.

  1. Phase 2

    Windows doubled the percent signs

    A command run with %VAR% was logged as %%VAR%%, so the simulated logs had to change to match.

  2. Phase 2

    The DLL was never really planted

    The .NET runtime loads version.dll before the game's code runs, so the planted copy went unused. The rule was right to stay quiet, and the test was wrong.

  3. Phase 2

    Windows changes the access it logs

    A request for 0x0438 is logged as 0x1438, so a rule looking only for the requested value would miss it.

  4. Phase 4

    Every compile has a different hash

    Building the same code gave different hashes across jobs, so the official hash can't be written into the rule.

  5. Phase 5

    Rules caught 2 of 10 variations at first

    Three rule fixes raised that to 5 of 10. The other misses stay on record with the reason each is hard to fix.

  6. Phase 6

    4 of 11 normal scenarios stayed quiet at first

    Raising the guessing threshold silenced small LAN events, at the cost of giving a guesser 19 tries instead of 9.

  7. Phase 7

    Converted rules don't always behave the same

    Elasticsearch rejected some converted queries outright, and its case-sensitive matching misses -EncodedCommand.

What this doesn't prove

06 / 06

This project detects tampering. It contains no cracks, cheats, or bypass steps, and it never touches a real game, license service, or anti-cheat product.

It's a fake game

Game rules protect FakeQuest, a harmless stand-in. A real game would need its own names, access values, and DLL lists.

The activity is scripted

Attacks and normal activity come from test scripts on disposable machines, so this can't say how often an alert would fire with real players.

Thresholds aren't tuned for real traffic

Numbers such as 20 guessed keys show the tradeoff. A real team would choose them from real traffic.

These are the gaps found so far

The evasion variations only cover the game and license rules, and they aren't a complete list of ways around a rule.

Rules aren't portable as they stand

Only Sigma rules are compared with Elasticsearch, on one version of the converter, and agreement only covers these logs.