Pouzivani resload_Protect#?

Teorie

Vyskytnou se ruzne situace, ve kterych se muze hodit byt informovan o pristupech nainstalovaneho programu do urcitych oblasti pameti. S pomoci funkci resload_Protect#? je mozne chranit urcite oblasti pameti od cteni anebo zapisovani procesorem. Chranit znamena, ze kazdy pristup do takto chranene oblasti vyvola Access Fault vyjimku, ktera vyusti v chybovy requester WHDLoadu. Jestlize oznacite oblast pameti jako chranenou pouzitim resload_Protect#? funkce, WHDLoad zmeni popisy one oblasti v prekladaci MMU. Nyni pri kazdem pristupu do dane pameti CPU vytvori vyjimku Access fault. Handler vyjimek uvnitr WHDLoadu overi duvod pro vyjimku a WHDLoad vyskoci s chybovym hlasenim. Tato schopnost se ale projevuje silnym zpomalenim behu programu, obzvlaste pokud jsou chranene casti kodu ve stejne strance pameti. Pokud program zavisi na rychlosti behu, rozdily ve funkcnosti jsou mozne - nektere programy nemusi s ochranou pameti fungovat.

Priklad: checksums kodu

Jestli instalujete hru pomoci WHDLoad, budete muset patchnout puvodni loader ve hre tak, aby program nahraval pres WHDLoad. Nektere hry provadeji kontrolni soucet klicovych oblasti programu, aby detekovaly zmeny puvodniho kodu. Tyhle rutiny muze byt nekdy tezke najit. Ale pouziti resload_Protect#? funkcni ve WHDLoad problem resi. Vsechno co musite udelat, je chranit bajty, ktere jste zmenili v kodu hry pred prectenim. Pak kazda rutina, ktera se pokousi precist vas opravny kod zpusobi chybu a vy zjistite, kde kontrola je.

Omezeni

Nesmite chranit pamet, kde je SSP. Jestli to udelate a stane se vyjimka, dojde k dvojite chybe na sbernici protoze CPU nebude schopne zapsat stackframe vyjimky. Pote uz se da program jen resetnout.