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

resload_Protect#? használata

Elmélet

Vannak olyan helyzetek, amikor hasznos lehet tudni azt, hogy az installált program milyen memória-hozzáféréseket hajt végre. A resload_Protect#? funkciókkal lehetséges bizonyos memóriahelyek védelme olvasás és/vagy írás ellen. A védelem azt jelenti hogy minden ilyen védett területhez való hozzáférés Access Fault kivétet fog létrehozni, amit a WHDLoad egy kérdezővel fog megjeleníteni. Ha egy memóriarészt védettnek állítasz be a resload_Protect#? funkcióval, a WHDLoad módosítani fogja a lapleírókat az MMU fordítási fában. Ezentúl minden védett laphoz való hozzáféréskor a CPU Access Fault kivétet fog generálni. A kivét handler a WHDLoad-on belül elenőrzi a kivét okát. Ha az ok egy hozzáférés volt egy védett laphoz de a hozzáférés nem egyezik a védett területtel, akkor a hozzáférés emulálva lesz, és normál programfuttatás folytatódik. Egyébként a WHDLoad kilép a megfelelő kérdezővel. Ha a hozzáférés egy hozzáférés az utasításokhoz (pl. a cpu megpróbál egy kódot betölteni), az mindig emulálva lesz, vagy más szavakkal a resload_Protect#? funkciók csak az adatok olvasását és írását szabályozzák. Tény hogy minden védett laphoz való hozzáférés (jelenlegi lapméret $1000) hozzáférési kivétet fog létrehozni, még ha a védett terület csak egy byte, az eredmény a program nagymértékű belassulása lesz. Különösen ha a kód ugyanazon a lapon van. Ha program függ a végrehajtási sebességtől, a futásban problémák adódhatnak. Ezért előfordulhat, hogy néhány program nem működik a védelmi funkcióval.

Példa: kódok ellenőrzése

Ha egy játékot installálsz a WHDLoad segítségével, módosítanod kell az eredeti betöltő rutint úgy, hogy a WHDLoad töltse be a játék adatait. Néhány játék ellenőrzi a kódterületeket, hogy nem módosították-e az eredeti kódot. Ezeket az érzékelő rutinokat néha nehéz megtalálni. De a resload_Protect#? funkciók használatával ez könnyű. Csak annyit kell tenned, hogy levéded olvasástól azokat a területeket, amelyeket megváltoztattál. Ezután minden rutin amely megpróbálja ellenőrizni és beolvasni a megváltoztatott kódot, egy hozzáférési hibát fog generálni. És így megtudod, hogy hol van a rutin.

Korlátozások

Nem védheted le azt a területet amelyre az SSP mutat. Ha ezt teszed, és egy kivét történik, az egy Double Bus Fault-ot eredményez, mivel a CPU nem tudja kiírni a kivét stackframe-et. A Double Bus Fault után csak egy reset után lehet folytatni a végrehajtást. A WHDLoad ellenőrzi a védett terület és az SSP konfliktusát, és megszűnteti azt, de ez nem segít, ha az SSP később megváltozik.
[Main] [Docs] [Installs] [Search] [Team] [Guestbook] [Links]