Seite 1 von 2
Bioswerte auslesen. Wie gehts mit PB?
Verfasst: 18.01.2005 10:04
von gonimaus
Hallo,
ich möchte einen bestimmten Adressbereich (String) auslesen und finde irgendwie keinen Einstieg. Unter C/DOS gings mit:
Code: Alles auswählen
char far * pString = (char far *) _MK_FP(0xf000,0xdb8e);
...
Den Stringpointer pString konnte ich dann weiterverarbeiten. Könnte das irgendwie mit PEEK und POKE funktionieren?
Wer kann mir helfen?
Gruß Gonimaus
Verfasst: 18.01.2005 13:54
von MVXA
ich glaub, dafür sollte man die inout32.dll verwenden. Mit der konnte man diese Werte auslesen. Bin mir aber nicht wirklich sicher

.
Verfasst: 18.01.2005 22:15
von gonimaus
Hallo LittleFurz,
ich hab mir die DLL heruntergeladen, komme aber irgendwie nicht so richtig weiter. Ich möchte z. B. das F-Segment auslesen und den Inhalt mit bestimmten Inhalten vergleichen.
Hast Du noch weitere Tipps?
Wäre sehr dankbar.
Gruß Gonimaus
Verfasst: 19.01.2005 10:28
von MVXA
Ich habe damals ein Tipp in VB gesehn. In Errinerung hatte ich, dass dazu die InOut32.dll verwendet wurde. Ich kann gerne Zuhause nochmal nachsehen. Bin grad im Praktikum (auf der Arbeit) und genieße meine Frühstücks Pause.
Verfasst: 21.01.2005 14:44
von gonimaus
Ich habe auch unter VB gestöbert. Aber ich komme nicht weiter. Hat noch jemand einen Tip?
Gruß Gonimaus
Verfasst: 21.01.2005 16:48
von Stefan
Hallo
Hab gerade einen alten Code von mir gefunden, der das Video-BIOS ausliest:
Code: Alles auswählen
;Benutzung auf eigene Gefahr !
Procedure GetVideoBios(Addr);Reads 32736 bytes from the Video-BIOS.
Path$=Space(#MAX_PATH)
If GetTempPath_(#MAX_PATH,@Path$)=0:ProcedureReturn 0:EndIf
Handle=CreateFile_(Path$+"VBIOS173.COM",#GENERIC_WRITE,#FILE_SHARE_WRITE,0,#CREATE_ALWAYS,#FILE_ATTRIBUTE_TEMPORARY,0)
If Handle
WriteFile_(Handle,?StartCOM,?EndCOM-?StartCOM,@dummy,0)
CloseHandle_(Handle)
Else
ProcedureReturn 0
EndIf
If RunProgram(Path$+"VBIOS173.COM","",Path$,1|2)=0
DeleteFile(Path$+"VBIOS173.COM")
ProcedureReturn 0
EndIf
If OpenFile(1,Path$+"OVBIOS91.DAT")
ReadData(Addr,$7FE0)
CloseFile(1)
DeleteFile(Path$+"VBIOS173.com")
DeleteFile(Path$+"OVBIOS91.DAT")
ProcedureReturn -1
EndIf
ProcedureReturn 0
StartCOM:;DOS-Programm
!MOV Eax,CS
!MOV DS,Eax
!MOV AH,3Ch
!MOV DL,42
!MOV DH,1
!XOR Ecx,Ecx
!INT 21h
!MOV EBX,Eax
!MOV CL,224
!MOV CH,7Fh
!XOR Eax,Eax
!MOV AL,0
!MOV AH,192
!MOV DS,Eax
!MOV AH,40h
!XOR EDX,EDX
!INT 21h
!MOV AH,3Eh
!INT 21h
!MOV AH,4Ch
!INT 21h
!DB "OVBIOS91.DAT",0
EndCOM:
EndProcedure
;Example:
Addr=AllocateMemory($F7E0)
If GetVideoBios(Addr)=0:MessageRequester("ERROR","Sorry, can't read Video BIOS."):End:EndIf
For C=0 To $F7E0-1
Byte=PeekB(Addr+C)
If Byte=13 Or Byte=10 Or Byte=0:PokeB(Addr+C,Asc(".")):EndIf
Next
For C=0 To $F7E0-1 Step 24
Debug PeekS(Addr+C,24)
Next
Gruß
Stefan
Verfasst: 21.01.2005 20:55
von GPI
Das mit den DOS-PRG-Trick halte ich für sehr problematisch...
Ansonsten: Geht sowas unter XP überhaupt noch. Sehe ich als Sicherheitsriskio...
Verfasst: 21.01.2005 22:30
von 125
@GPI
Sogar Bios-Flashes unter Windoof sind möglich....
Verfasst: 21.01.2005 22:35
von Falko
Wenn man zur Sicherheit einen Eprombrenner hat, dann ja.
Hab meine Erfahrung mit Winflash unter XP gemacht und die war nicht
so berauschend.

Verfasst: 22.01.2005 09:18
von real
Der direkte Zugriff auf das BIOS unter WinXP funktioniert meiner Erfahrung nach nur über einen LowLevel-Treiber (der von den Flash-Programmen genutzt wird).