DLL Code z. Laufzeit ändern, lokale Änderung
-
hi.
ich habe mal eine frage. und zwar ist ja der sinn einer dll, dass der code nur einmal im speicher vorhanden ist, damit logischerweise der speicher nicht mit der selben implementation immer und immer weiter vollgeschrieben wird. alle prozesse können dann auf die funktionen zugreifen und brauchen selbst den code nicht zu implementieren. umso mehr/weniger prozesse mit zugriff umso mehr/weniger wird der wert des verwendungszählers in/decrementiert. wenn man aber unter windows code parts einfach patcht, dann gilt die änderung nur für den prozess, aus dem der patch kam. meine frage: wie regelt windows das? werden solche änderungen für den prozess erkannt, und dann wenn der nächste prozess in der execution chain (die liste beim multitasking) drann ist, die parts in der dll mit dem originalen code wiederhergestellt? und wenn dann irgendwann der patcher prozess wieder rechenzeit bekommt, die änderungen wieder gesetzt (vom OS)? ich denke, wenn man api funktionen, wie CopyMemory oder WPM verwendet, dann wäre das schon zu bemerken, aber man kann ja direkt zugriff auf die dll haben. z.B:
HMODULE dllModuleBase = GetModuleHandle(lpszModuleName); if (!dllModuleBase) return; IMAGE_DOS_HEADR* pDos = (IMAGE_DOS_HEADER*)dllModuleBase; pDos->blablabla = irgendeinwert; //schreibender zugriff
oder ganz einfach änderungen mittels detour patches.
danke schon mal für antworten, denn das frage ich mich schon seit geraumer zeit.
-
dllentrypoint schrieb:
meine frage: wie regelt windows das?
Speicherseiten mit Copy-on-write; siehe PAGE_EXECUTE_WRITECOPY.
Das Speicherseitenmanagement ist letzlich ein Prozessorfeature, im Fall des x86 im Protected mode. Ob der x86 direct copy-on-write implementiert, weiß ich nicht, aber ich glaube es nicht; eher wird Windows einen Page-Guard für Schreibzugriffe einrichten, im Zugriffsfall dann eine beschreibbare Kopie der Seite erstellen und anstelle der geschützten Seite in die Seitentabelle eintragen.
-
ok, danke für die anwort.
da steckt ziemlich viel drinne, was ich nicht kenne. gibt es da eventuell vllt ein buch (vorziehen würde ich deutsch), in dem man so interne sachen bzgl. protected mode und windows internals lernen kann? da ich das nämlich auf hobbybasis mache und kein fachinformatiker bin. ich würde dass nämlich gerne von a-z lernen!
-
Für solche Sachen empfiehlt sich
Windows Internals | ISBN: 0735648735 und
Windows Internals | ISBN: 0735665877.
Ob es eine deutsche Übersetzung gibt weiß ich nicht... Ansonsten kannst du dir auch mal
Rootkits | ISBN: 0321294319
anschauen
-
Vielen Dank.