REV úloha 2: Importní tabulka

Varování (Termín)

Čtvrtek 26. 11. 2026: paralelka 101 v 16:00, 102 v 17:45, 103 v 19:30. Po termínu je to 0 bodů. Úloha je za 10 bodů a odevzdat ji můžeš víckrát.

Co máš odevzdat

Program s funkcemi MallocDebug_Init, MallocDebug_Done a substitucemi pro malloc, calloc, realloc a free. Init přepíše IAT, substituce si vedou záznamy a Done vrátí IAT a vypíše úniky.

Co musíš pochopit

  1. Cestu k IAT: DOS hlavička, NT hlavičky, DataDirectory, importní adresář.
  2. RVA: všechny adresy jsou offsety od báze modulu.
  3. Rozdíl OriginalFirstThunk a FirstThunk: jména hledáš v prvním, adresy přepisuješ ve druhém.
  4. VirtualProtect: před zápisem odemkni a pak vrať původní ochranu.
  5. Specifikaci realloc: tady selhává nejvíc jinak dobrých řešení.

Co si zopakovat

Co Kde
Procházení importního adresáře cvičení 4
Kapitola o importech Tok kódu, start programu a importy
Překlad s /MD zadání, sekce Řešení běžných problémů

Doporučené pořadí

  1. Přelož testovací program s /MD a v CFF Exploreru ověř, že importuje paměťové funkce.
  2. Vypiš všechny importy programu, ještě bez zápisu.
  3. Najdi a přepiš jednu funkci.
  4. Doplň zbylé tři a uložení původních ukazatelů.
  5. Napiš tabulku záznamů a výpis úniků.
  6. Ošetři okrajové případy.
  7. Otestuj opakované Init a Done v libovolném pořadí.

Na co si dát pozor

Okrajové případy realloc

Nastuduj si dokumentaci a otestuj aspoň: nulový ukazatel, nulovou velikost, zvětšení s přesunem bloku a selhání.

Pravidla pro AI

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ů. Pokud z tohoto soupisu vycházíš, přilož konverzaci, ve které vznikl, a každou další konverzaci s AI k této úloze. Soupis obsahuje jen obecné postupy a neanalyzuje zadané programy.

Kontrola před odesláním

Zdroje

  • NI-REV, zadání 2. Importní tabulka
  • NI-REV cvičení 4: Importní tabulka
  • rev02cz, strany 37–44