Archivy MPQ

Storm.dll

Dynamická knihovna "Storm.dll"

Hry od společnosti Blizzard, vydané v letech 1996 až 2004 (Diablo, Diablo II, Starcraft, Warcraft II a Warcraft III) obsahovaly dynamickou knihovnou Storm.dll, která exportuje funkce, které umožňovaly číst data z archivů MPQ. Tato DLL také obsahuje funkce pro práci s pamětí, podporu pro sítě, kompresní funkce a jiné. Existovala i verze pro Mac, pojmenovaná Storm.bin. Funkce pro podporu archivů MPQ ve Storm.dll umožňovaly pouze čtení dat. Funkce pro vytváření archivů MPQ byly zakompilovány přímo do hlavního EXE.

První verze knihovny Storm.dll bylo možné použít kdekoliv - stačilo pouze zjistit parametry dané funkce, natáhnout knihovnu do aplikace pomocí LoadLibrary a zjistit adresu dané funkce pomocí GetProcAddress. Jména funkcí exportovaných knihovnou Storm.dll bylo možné zobrazit jakýmkoliv nástrojem na prohlížení souborů v PE formátu.

Tato vlastnost byla v rozporu s bezpečností dat, kterou společnost Blizzard pro archivy MPQ vyžadovala. Z toho důvodu obsahovala knihovna Storm.dll vydaná od verze 1.04 hry Diablo, změny, které měly znesnadnit její použití:

Počínaje verzí 1.29.2.9231, Warcraft III nepoužívá ke čtení archivů knihovnu Storm.dll. Namísto toho je kód přímo zakompilován v hlavním EXE (Warcraft III.exe).

Použití Storm.dll

Použití Storm.dll ve vlastních aplikacích se nedoporučuje. Storm.dll nepodporuje novější verze archivů a její funkce jsou zakompilovány do hlavního EXE. Pokud přesto chcete použít Storm.dll ve vlastní aplikaci, je nutné přilinkovat importní knihovnu. Tato importní knihovna, společně s hlavičkovým souborem je součástí knihovny StormLib a je k dispozici v sekci Ke stažení. Poslední verze knihovny Storm.dll byla vydána s hrou Warcraft III: The Frozen Throne.

StarEdit.exe a LMPQAPI.dll

StarEdit je editor map, vydaný jako součást hry Starcraft. Protože mapy pro Starcraft (a také pro Warcraft III a Starcraft II) jsou archivy MPQ, StarEdit.exe obsahuje funkce, které umožňují vytvářet a modifikovat archivy MPQ. Protože ale StarEdit není DLL, není jej možné přímo načíst pomocí LoadLibrary. Ruský programátor Andrej Lelikov napsal kód, který načte StarEdit.exe do paměti, provede potřebné relokace a umožní volání funkcí pro vytváření MPQ. Tento kód byl publikován jako LMPQAPI, knihovna která umí vytvářet archivy MPQ.