REV úloha 1: E-mail

Varování (Termín)

Čtvrtek 5. 11. 2026: paralelka 101 v 16:00, paralelka 102 v 17:45, paralelka 103 v 19:30. Počítej s 16:00, dokud si paralelku neověříš.

Rozhoduje čas doručení do schránky cvičícího. Po termínu je to 0 bodů, i když úloha byla hotová.

Co máš odevzdat

Samotné odeslání slušného e-mailu nestačí, hodnotí se i popis. Úloha je za 10 bodů a odevzdat ji můžeš víckrát, třeba když doplňuješ chybějící části.

Program CrackMe01.exe neměň. Skutečné odeslání selže na TLS a to nevadí: stačí, aby se program jen na základě konfiguračního souboru dostal k použití funkce MailSend.

Co musíš pochopit

Podstata úlohy je přečíst z kódu, jak program soubor čte a co o něm kontroluje.

  1. Kde program soubor čte. Soubor se obvykle otevírá přes CreateFileA a čte dalšími API funkcemi. CreateFile se navzdory jménu používá i pro čtení (cvičení 2).
  2. Jak vypadá přístup ke struktuře. Přístupy jako [REG], [REG+4], [REG+5] prozrazují pole struktury a jejich odsazení (cvičení 2).
  3. Jak se pozná typ. MOVSX značí hodnotu se znaménkem, MOVZX bez znaménka. Podobně JGE je porovnání se znaménkem, JNB bez něj (cvičení 2).
  4. Jak se čtou podmínky a smyčky. Dvojice CMP/TEST a podmíněný skok je if, skok zpět je smyčka (rev02, strany 5–12).
  5. Kam vede špatná větev. U každé kontroly hledej, co se stane při neúspěchu. Program může po špatném formátu pokračovat dál a poslat neslušný e-mail, takže „nespadlo to“ nestačí.
Poznámka (Nad rámec materiálů)

Čísla se na x86 ukládají little-endian. Hodnota 0x00000010 je v souboru jako 10 00 00 00. Hex editor ti tak ukáže bajty opačně, než je vidíš v registru.

Co si zopakovat

Co Kde Čas
Ovládání debuggeru, okna registrů, paměti a zásobníku cvičení 1 30 min
Rámec zásobníku, proměnné a práce s API cvičení 2 40 min
Nástroje (IDA Free, x64dbg, API Monitor, Process Monitor, HxD) cvičení 3 10 min
Podmínky a smyčky v assembleru rev02, strany 5–12 20 min

Doporučené pořadí

  1. Spusť program s přiloženým souborem a zapiš si, co přesně vidíš.
  2. Najdi v debuggeru místo, kde program soubor otevírá a čte. Pomůže breakpoint na API funkci.
  3. Sleduj, kam se přečtená data uloží, a nastav si na ně breakpoint na paměť.
  4. Pro každou kontrolu si do tabulky zapiš: odsazení v souboru, velikost, očekávaná hodnota, co se stane při chybě.
  5. Sestav soubor v hex editoru.
  6. Ověř ho v debuggeru. Musíš dojít až k volání MailSend a text e-mailu musí být slušný.
  7. Napiš popis podle tabulky a odešli.

Textový editor nepoužívej, může změnit konce řádků nebo přidat BOM. Pracuj v hex editoru.

Typické chyby

Pravidla pro AI

Předmět AI povoluje, ale s podmínkami: musíš vyznačit části řešené s AI a vždy přiložit celý záznam konverzace. Jinak je řešení za 0 bodů a závažné nebo opakované prohřešky mohou vést až k neudělení zápočtu.

Tento soupis vznikl s pomocí AI z materiálů předmětu a nic z programu neanalyzuje. Pokud z něj vycházíš, ber to jako použití AI:

  1. Přilož celou konverzaci, ve které soupis vznikl. V Claude Code ji uložíš například příkazem /export.
  2. Přilož i každou další konverzaci s AI k této úloze.
  3. V popisu vyznač, k čemu jsi AI použil.

Pokud jsi AI použil jen na přípravu, stačí k tomu věta:

Při přípravě jsem použil soupis vytvořený pomocí Claude z materiálů předmětu (obecné postupy, bez analýzy programu). Celý záznam konverzace přikládám. Analýzu a řešení jsem udělal sám.

Poslední větu napiš jen tehdy, když je pravdivá. Pomohla-li ti AI i s analýzou nebo se souborem, vyznač konkrétní části.

Kontrola před odesláním

Zdroje

  • NI-REV, zadání 1. E-mail
  • NI-REV, hodnocení: domácí úlohy a použití AI
  • NI-REV, cvičení 1 až 3
  • rev01cz, strany 17–21 (zarovnání dat), 26–28 (volací konvence), 30–37 (prolog)
  • rev02cz, strany 3–20 (tok kódu)