[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]

Používání resload_Protect#?

Teorie

Vyskytnou se různé situace, ve kterých se může hodit být informován o přístupech nainstalovaného programu do určitých oblastí paměti. S pomocí funkcí resload_Protect#? je možné chránit určité oblasti paměti před čtením anebo zapisovaním procesorem. Chránit znamená, že každý přístup do tatko chráněné oblasti vyvolá Access Fault vyjímku, která vyústí v chybový requester WHDLoadu. Jestliže označíte oblast paměti jako chráněnou použitím resload_Protect#? funkce, WHDLoad změní popisy oné oblasti v překladači MMU. Každý přístup k chráněné paměťové stránce (velikost stránky je v současnosti 4096 bajtů) vytvoří chybu access fault, i když bude mít chráněná oblast paměti velikost jen jednoho bajtu. Výsledkem používání funkce je silné zpomalení běhu programu. Obzvláště pokud jsou části kódu v chráněné stránce. Pokud program na rychlosti běhu závisí, můžou se vyskytnout odlišnosti v tom, co program dělá. Některé programy tak nemusí s ochranou paměti přes resload_Protect fungovat.

Příklad: checksums kódu

Pokud instalujete hru pomocí WHDLoad, budete muset patchnout původní loader ve hře tak, aby program nahrával přes WHDLoad. Některé hry provádějí kontrolní součet klíčových oblastí programu, aby detekovaly změny původního kódu. Tyto rutiny může být někdy těžké najít. Ale použití resload_Protect#? funkcí hledání usnadňuje. Všechno, co musíte udělat, je chránit bajty, které jste změnili v kódu hry před přečtením. Pak každá rutina, která se pokouší přečíst váš opravený kód způsobí chybu a vy zjistíte, kde kontrola je.

Omezení

Nesmíte chránit paměť, kde je SSP. Pokud to uděláte a stane se vyjímka, dojde k dvojité chybě na sběrnici, protože CPU nebude schopné zapsat stackframe vyjímky. Poté už se dá program jen resetnout. WHDLoad ověřuje konflikt chráněné paměti se SSP a ukončí se, pokud takový stav nastane. Tohle ale nepomáhá, pokud se později SSP změní.

Pro víc omezení a informací si prosím přečtětě soubor Autodoc na téma různých funkcí resload_Protect.

  • resload_ProtectRead
  • resload_ProtectReadWrite
  • resload_ProtectRemove
  • resload_ProtectSMC
  • resload_ProtectWrite
    [Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]