Hallo, ich habe vor diverse Funktionen meines Kernels in Module auszulager und mein bisheriges Konzept sah so aus, dass ich im Datensegment des Kernels beim Laden eines Moduls speicher allociere und das Modul an diese Stelle lade. Dann wird ein Codesegment eingerichtet, welches den Code des Moduls umfasst (immernoch im Kerneldatensegment). Als Daten und Stacksegment soll das des Kernels mitbenutzt werden. Um auf globale Daten des Moduls zugreifen zu können (welche per standard ja bei Offset 0 beginnen würden) habe ich es so gemacht, dass in Modulen beim Zugriff auf globale Daten noch edx auf die Adresse draufgezählt wird (wo der Offset der Moduldaten im Kerneldatensegment drinsteht).
Dies funktioniert auch soweit ganz gut, nun ist nur das Problem, dass ich nun alle Libs die ich so habe ein zweites mal compilieren müsste um eine spezielle Modulversion zur Verfügung zu stellen (mit +edx für globale Daten).
Hat da Jemand eine besser Idee?
Wie ich in einigen Threads gelesen habe ersetzen einige von euch nach dem Laden des Moduls alle Adressen mit dem richtigen Offset, das scheint mir aber etwas zu aufwändig zu sein, ebenso wie ein extra Datensegment für jedes Modul zu spendieren.
MM
Dies funktioniert auch soweit ganz gut, nun ist nur das Problem, dass ich nun alle Libs die ich so habe ein zweites mal compilieren müsste um eine spezielle Modulversion zur Verfügung zu stellen (mit +edx für globale Daten).
Hat da Jemand eine besser Idee?
Wie ich in einigen Threads gelesen habe ersetzen einige von euch nach dem Laden des Moduls alle Adressen mit dem richtigen Offset, das scheint mir aber etwas zu aufwändig zu sein, ebenso wie ein extra Datensegment für jedes Modul zu spendieren.
MM

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert
??