Otázka:
Co je to rekonstrukce importu a proč je to nutné?
user2142
2013-05-31 03:15:57 UTC
view on stackexchange narkive permalink

Při čtení o rozbalení někdy vidím krok „rekonstrukce importu“. Co je to a proč je to nutné?

Jeden odpovědět:
Rolf Rolles
2013-05-31 03:47:33 UTC
view on stackexchange narkive permalink

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.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...