Reading width
Wide uses the full column for everything, text, diagrams, code, and exercises. Narrow keeps the standard reading width.
Text size
Scales the body text. Headings and code blocks keep their size.
In this section
Module Summary
What you learned in this module
0.1 Your First Scan, and What It Does Not Tell You. You installed YARA-X as yr and the 4.x engine alongside it, wrote a rule and ran it. The section's subject was a single tool behavior: a scan that matches nothing prints nothing and exits zero, which is indistinguishable from a scan of an empty directory, a scan whose path was wrong, and a scan whose rule describes nothing real. Four situations, one output. --negate separates them by listing every file examined, and yr check catches a class of problem before any scan, warning that { 00 00 } is a slow pattern while saying nothing at all about "MZ" being useless.
0.2 The Specimens You Will Build. Four specimens from software you already have, and the reason a single sample cannot test a rule: the patterns came out of that file, so finding them again is a tautology. The family of three builds demonstrated it in one scan, with two four-line rules that both compile clean giving completely different coverage. Three characters changed in a string constant produced three different hashes, with no packer and nothing adversarial involved.
0.3 The Corpus Your Rules Must Not Match. The other half of the test set, and the number that carries it: 628 of 795 files in a system directory matched a single common string. A small corpus does not give an imprecise answer, it gives a confident wrong one, because the rate being measured is smaller than the sample's resolution. And composition matters more than size, because a corpus that structurally cannot contain your pattern returns a zero that looks exactly like precision.
0.4 Where Your Rules Will Run. Four surfaces with four different time budgets, engines and false-positive tolerances. --scan-list for hunts driven by somebody else's list of paths, --skip-larger in bytes only, --threads and --timeout for bounding work on a machine somebody is using. The habit that follows: write to the most restrictive engine you will deploy to.
0.5 What a Match Is Worth. A match says the described bytes are present in this file. It does not say the file is malicious, that it ran, or that the rule's name is accurate, and a correct rule requiring three networking strings matched forty-four system binaries to prove it. An absence establishes least of all, and turning one into a finding needs two checks: the negation to prove the scan reached the files, and a positive control to prove the rule can fire.
0.6 What the Seven Modules Build. The course order as a claim about how the skill is acquired. Syntax is one module of seven because it is the half a reference can teach; running scans and choosing patterns are the two that decide whether a rule set is worth maintaining.
The thread through all six
Every section returned to the same discipline from a different direction: a result is only as informative as the check behind it. An empty scan, a zero from a corpus, a hit from a rule you did not write, and a rule that matches its own sample are all results that look conclusive and are not. The tool gives you the means to close each gap, and the commands cost seconds.
What's next
Module 1 covers the language: strings, hex patterns, regular expressions, modifiers, conditions and metadata. The argument running through it is that the condition is where the thinking happens, since most people write the strings section carefully and reach for all of them without pausing.
It also puts yr check and yr fmt into your writing loop rather than after it, because a linter warning read while typing costs nothing and the same problem found during a fleet hunt costs an afternoon.
How was this module?
Your feedback helps us improve the course. One click is enough, comments are optional.