Použití upravených Lua souborů ve WoW
Úvod
Pokud se pokusíte použít ve hře upravené soubory GlueStrings.lua a GlobalStrings.lua, tak vám hra vypíše hlášení:
Your game interface files are corrupt. Please remove your Interface\FrameXML folder.
Aby bylo možné hru nastartovat s upravenými soubory, je potřeba upravit WoW.exe tak, aby se nespouštěl kód kontroly konzistence lua souborů.
Postup
- Stáhněte si dissasembler pro procesory x86 jménem IDA. Starší verze programu lze používat zdarma pro nekomerční účely.
- Spusťte program a zvolte New a formát PE executable.
- Nechejte program zanalyzovat exe soubor pro vytvoření seznamu instrukcí a pomocných tabulek. To nějaký čas potrvá v závislosti na výkonu počítače.
- Po dokončení analýzy si uložte projekt na disk pro pozdější použití.
- Nyní je potřeba vyhledat text "FrameXML has corrupt signature" v tabulce řetězců (Strings). Zvolte menu Search - Search... a a zadejte hledaný text.
- Jakmile požadovaný text najdete, dvojklikem na řetězec se přenesete do definice v kódu.
- Zde před řetězcem je uveden název zanalyzované proměnné aFramexmlHasCor. Klikněte na tento název pravým tlačítkem myši a zvolte Jump to xref to operand.... Aplikace vám nabídne možná místa, odkud se kód na řetězec odkazuje. Volbou Ok potvrdíte výběr a budete přenesení do kódu.
- Zde pokud se vám zobrazilo stromové rámečkové zobrazení, tak na blok, kde je odkazováno na aFramexmlHasCor se odkazuje jiný blok, ve kterém je obsažen podmíněný skok se čtyřmi možnými cestami. Zde nazývaný také jako switch jump pomocí instrukce jmp. Zde první tři cesty jsou chybové a třetí je platná.
- V řádku této jmp instrukce je odkaz na návěstí ofs_adresa, na který proveďte dvojklik a ten vás přenese na tabulku o čtyřech adresách.
- Nyní je potřeba provést změnu prvních třech adres na stejnou hodnotu jako má třetí adresa. Tím bude zajištěno, že za všech okolností, program bude pokračovat korektní cestou a nevypíše chybu. Přepis hex hodnot lze provést buď přímo v aplikaci nebo pomocí některého vhodného hex editoru.
- Stejný postup je nutné zopakovat také pro řetězec "GlueXML has corrupt signature, protože kontrola je zde provedena dvakrát.