Při čtení o rozbalení někdy vidím krok „rekonstrukce importu“. Co je to a proč je to nutné?
Při čtení o rozbalení někdy vidím krok „rekonstrukce importu“. Co je to a proč je to nutné?
V typickém nebaleném spustitelném souboru Windows PE obsahuje záhlaví metadata popisující operační systém, na kterých symbolech z jiných knihoven závisí spustitelný soubor. Zavaděč operačního systému je zodpovědný za načtení těchto knihoven do paměti (pokud již nejsou načteny) a za umístění adres těchto importovaných symbolů do struktur (jejichž umístění jsou také určena metadaty) v obrazu paměti spustitelného souboru. Packers, na druhou stranu, často zničit tato metadata, a místo toho provést fázi řešení (což by za normálních okolností provádí zavaděč) sám. Cílem rozbalení je odebrat ochrany z binárního souboru, včetně chybějících informací o importu. Analytik (nebo rozbalovací nástroj) musí tedy určit kolekci importů, které načte packer pro spustitelný soubor, a znovu vytvořit metadata v rozbaleném obrázku spustitelného souboru, což způsobí, že operační systém správně načte import jako obvykle.
Analytik obvykle v těchto situacích určí, kde se v rámci obrazu paměti spustitelného souboru nacházejí informace o importu. Analytik zejména vyhledá pole IMAGE_THUNK_DATA
, což jsou pole zakončená NULL
, která obsahují adresy importovaných symbolů. Poté analytik spustí nástroj, který v podstatě provádí inverzní funkci GetProcAddress
: vzhledem k jednomu z těchto ukazatelů na importované symboly určí, ve které knihovně DLL je ukazatel umístěn a na kterou konkrétní exportovanou položku se odkazuje ukazatelem. Například bychom mohli vyřešit 0x76AE3F3C
na Kernel32! CreateFileW
. Nyní pomocí této textové informace vytvoříme struktury IMAGE_IMPORT_DESCRIPTOR
popisující každou importovanou knihovnu DLL, použijeme původní adresy polí IMAGE_THUNK_DATA
, uložíme názvy knihoven DLL a importované symboly někde do binární (možná v nové sekci) a nasměrujte položky IMAGE_THUNK_DATA
na tyto nové názvy.
ImpRec je populární nástroj, který automatizuje většinu nebo všechny tohoto procesu, v závislosti na baliči. To, co jsem právě popsal, odráží realitu asi v 95% případů. Vážnější ochrana, jako je ochrana proti kopírování videohry a složitý vlastní malware, využívá další triky, které omezují proces rekonstrukce.