Použití upravených Lua souborů ve WoW: Porovnání verzí

Z ZděchovNET
Skočit na navigaci Skočit na vyhledávání
Bez shrnutí editace
Bez shrnutí editace
 
Řádek 18: Řádek 18:
* Po dokončení analýzy si uložte projekt na disk pro pozdější použití.
* Po dokončení analýzy si uložte projekt na disk pro pozdější použití.


* Nyní je potřeba vyhledat text chybové hlášky v tabulce řetězců (Strings). Zvolte menu Search - Search... a jako hledaný text zadejte text chybové hlášky.
* 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, je potřeba pomocí zpětných odkazů do assemblerovského kódu najít vhodné místo, kde se kontroluje, zda jsou soubory změněné a pokud je zjištěn rozdíl, tak je vypsána chybová hláška.
* 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.


[[Kategorie:WoW]]
[[Kategorie:WoW]]

Aktuální verze z 4. 1. 2014, 00:55

Ú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.