Zaznacze na poczatku - wielkiej wiedzy w temacie nie mam, wiec moge sie mylic, lepiej doczytaj/poczekaj na odp Deusa/dokladnie przetestuj:
Ten sposob z GetModuleHandle ma jedna spora wade(o ile dobrze rozumiem jak chcesz to stosowac) - wystarczy minimalna zmiana nazwy dllki i jakis syf sie przecisnie. Moze zobacz jakie biblioteki laduje gra, zaladuj do jej procesu swoja dllke, ktora na wejsciu odpali dodatkowy watek, ktory bedzie stale kontrolowal aktualnie zaladowane dllki i wywalal te ktorych nie ma na liscie "dozwolonych". Co prawda czesc dllek laduje sie, chociaz nie maja "zlych zamiarow" - np. ggwhook.dll (nie wiem czy jest w nowszych wersjach, ale u mnie jest na 100% i wciska sie do kazdego procesu), ale mysle, ze nic zlego sie nie stanie jak je po prostu wywalisz :)
Co do hookow na poziomie jadra - prawde mowiac tez mi to wpadlo do glowy i chyba bylby to niezly sposob na poradzenie sobie z OpenProcess(tibia, PROCES_HAKIER_ACCESS). Nie mam pojecia jak sytuacja wyglada na systemach 64bitowych(czas zainstalowac.... ech juz od pol roku sie zbieram ;) ), ale sprobuje w wolnej chwili(pewnie w czwartek/piatek) cos klepnac i sprawdzic jak to dziala na xp 32bit - zobaczymy co z tego wyjdzie.