22. November 2024, 10:57
Willkommen
Gast
. Bitte
einloggen
oder
registrieren
.
Hast du deine
Aktivierungs E-Mail
übersehen?
Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Lowlevel
»
Lowlevel
»
Lowlevel-Coding
»
Thema:
Sprung R0 nach R1
« vorheriges
nächstes »
Drucken
Seiten: [
1
]
Autor
Thema: Sprung R0 nach R1 (Gelesen 8112 mal)
joachim_neu
Beiträge: 1 228
Gespeichert
«
am:
27. May 2005, 13:18 »
Sprung R0 nach R1
hi,
kann es sein, dass sprünge im PM von Ring0 nach Ring1 und so weiter (Ring2, Ring3) nur mit TSS gehen? währe ja sonst sehr unsicher, weil das programm in Ring1 den stack manipulieren könnte vor dem ret. oder wie funktioniert das?
J!N
http://www.joachim-neu.de
|
http://www.orbitalpirates.de
|
http://www.middleageworld.de
System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...
Legend
Beiträge: 635
Gespeichert
«
Antwort #1 am:
27. May 2005, 13:21 »
Sprung R0 nach R1
Wie kann es denn vor dem ret den Stack manipulieren? Da läuft doch noch Ring 0 Code. Und bevor du in den niedrigeren Ring springen willst, wirst du wohl den Stack anpassen wollen (bei iret geht das ja in einem Schritt), abgesehen davon das der Stack vom Ring 0 gar nicht erst erreichbar sein dürfte für den Ring 1 Code.
*post*
Roshl
Beiträge: 1 128
Gespeichert
«
Antwort #2 am:
27. May 2005, 13:23 »
Sprung R0 nach R1
Von 0 in 1 ist kein Problem da reicht einfacher Call aus. Nur bei 1 in 0 braucht man Call-Gates, TSS oder anderes^^
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]
joachim_neu
Beiträge: 1 228
Gespeichert
«
Antwort #3 am:
27. May 2005, 13:25 »
Sprung R0 nach R1
Also.
Ich bin in Ring 0. Von da aus mach ich einen Call nach Ring 1. Dürfte ohne Call-Gates gehen. Ich bin also jetzt in Ring 1. Dort könnte doch das Programm den Stack ändern (heißt die Rücksprungadressen manipulieren) und dann käme man nichtmehr zurück! Wird das verhindert? Bei TSS gehts ja nicht, weil in dem BackLink das letzte TSS gespeichert wird, das dann aufgerufen wird und was nicht manipulierbar ist.
J!N
ADD: Außerdem hat man da noch nen anderen Stack durch das TSS!
http://www.joachim-neu.de
|
http://www.orbitalpirates.de
|
http://www.middleageworld.de
System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...
Legend
Beiträge: 635
Gespeichert
«
Antwort #4 am:
27. May 2005, 13:30 »
Sprung R0 nach R1
Per einfachem Rücksprung kommst du sowieso nicht in Ring 0 zurück.
*post*
Roshl
Beiträge: 1 128
Gespeichert
«
Antwort #5 am:
27. May 2005, 13:31 »
Sprung R0 nach R1
Naja wenn der Kernel funktionen aufruft die ihn zerschiessen...selbst Schuld. Das was der Kernel direkt aufruft sollte schon sicher sein. Das was er nicht selbst direkt aufruft, also was Code von ausserhalb ist, sollte schon irgendwie abgesichert sein
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]
n3Ro
Beiträge: 288
Gespeichert
«
Antwort #6 am:
27. May 2005, 13:43 »
Sprung R0 nach R1
Wenn du zwischen den einzelnen Protection-Rings hin und her springen willst brauchst du nur ein TSS, weil darin die Stack Pointer für die höheren Privileg-Stufen gespeichert sind. Um von einer niederen in eine höher privilegierte Stufe zu kommen braucht man ein Call, Int oder Trap Gate. Andersherum geht es mit einem Einfachen Iret. Und dabei wird das TSS nicht geswitched!
Agieren statt Konsumieren!
joachim_neu
Beiträge: 1 228
Gespeichert
«
Antwort #7 am:
27. May 2005, 21:40 »
Sprung R0 nach R1
Heißt man braucht TSS.
http://www.joachim-neu.de
|
http://www.orbitalpirates.de
|
http://www.middleageworld.de
System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...
n3Ro
Beiträge: 288
Gespeichert
«
Antwort #8 am:
27. May 2005, 22:37 »
Sprung R0 nach R1
Ja, wird aber nicht so benutzt wie man sich das früher ausgedacht hatte
Agieren statt Konsumieren!
Roshl
Beiträge: 1 128
Gespeichert
«
Antwort #9 am:
30. May 2005, 09:01 »
Sprung R0 nach R1
Wenn man unbedingt TSS braucht, wie soll das dann auf AMD64 gehen? Da gibt es kein Hardwaretasking mehr. Muss also auch anders funktionobeln.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]
Legend
Beiträge: 635
Gespeichert
«
Antwort #10 am:
30. May 2005, 10:37 »
Sprung R0 nach R1
Unter AMD64 ist das gut möglich ... unter x86 wohl eher nicht wenn man die Ringe benutzt (und das wird man ja meistens ...)!
Obwohl, SYSCALL/SYSENTER könnten auch eine Möglichkeit bereitstellen, kann ich aber nicht exakt sagen!
*post*
n3Ro
Beiträge: 288
Gespeichert
«
Antwort #11 am:
31. May 2005, 14:05 »
Sprung R0 nach R1
Unter AMD64 im LongMode gibt es immernoch eine TSS, aber wirklich NUR EINE! Da stehen die Stackpointer für die einzelnen Ringe drin plus noch ein paar extra Stack Pointer, die man, wenn man will, für seine Interrupts verwenden kann.
Agieren statt Konsumieren!
Drucken
Seiten: [
1
]
« vorheriges
nächstes »
Lowlevel
»
Lowlevel
»
Lowlevel-Coding
»
Thema:
Sprung R0 nach R1
Einloggen
1 Stunde
1 Tag
1 Woche
1 Monat
Immer