Autor Thema: Bios  (Gelesen 5311 mal)

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« am: 09. May 2005, 07:28 »
ist es eigentlich möglich einen Bios int aufzurufen, indem man einfach
einen aufruf (far call) simuliert und dann an die routine springt?

also:
cs und eip pushen
ivt auslesen
an die routine aus der ivt springen
?

DDR-RAM

  • Beiträge: 184
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 09. May 2005, 09:50 »
im realmode? ja

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 09. May 2005, 12:15 »
Hi,

scheint wohl PMode zu sein, wegen eip.

Also, wenn du im PMode bist, wird das wohl kaum so funktionieren.
Um BIOS Interrupts aufzurufen kannst du aber den V86 Modus benutzen.
Wie der funktioniert, keine Ahnung... :)

Gruß, GhostCoder
A man, a legend!

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #3 am: 09. May 2005, 13:51 »
ne, geht so nicht. du darfst keinen far-call starten, sondern die werte auf den stack hauen, die bei einem iret restored werden (cs,eip,eflags (andere reihenfolge warscheinlich!)) und dann hinspringen. sonst hauts den weg beim iret.

theoretisch könnte man schon biosints auf diese weise benutzen, nur gibt das probleme mit den opcodes. im RM (16bit!) wird vor jede operation mit 32bit-registern das präfix 0x66 gestellt, im PM (32bit!) wird vor jede operation mit 16bit-registern das präfix 0x66 gestellt. wenn du jetzt bei 32bit in eine 16bit-routine springst, dann verdreht er immer eax und ax und so weiter. an sich kein problem, nur bei sachen alla "shl" oder sowas müsste man 16 bits weitershiften, damit das gleiche rauskommt, was aber nicht gemacht wird. deswegen ist das aufrufen an sich schon möglich, nur wird halt nur matsch rauskommen, wenn du nicht sogar ne exception wegen invalid-opcode bekommst.
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,...

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 09. May 2005, 18:41 »
im pmode funktioniert's garantiert nicht, da die bios-ints fuer den rm
programmiert wurden und sich nen scheissdreck um gewisse
vorkehrungen fuer den pm, so zB paging, multitasking (interrupts duerfen
sich nicht selbst aufrufen - passiert aber im pm) oder die geänderte
speicherverwaltung.

theoretisch ginge es, wenn du den prozessor im 16-bit-realmode betreibst
und auf die speicheradressen aufpasst... aber das ist viel zu viel arbeit.

vergiss es lieber
svenska

 

Einloggen