Bioswerte auslesen. Wie gehts mit PB?

Für allgemeine Fragen zur Programmierung mit PureBasic.
gonimaus
Beiträge: 27
Registriert: 26.09.2004 14:21
Wohnort: Günzburg

Bioswerte auslesen. Wie gehts mit PB?

Beitrag 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
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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 :(.
Bild
gonimaus
Beiträge: 27
Registriert: 26.09.2004 14:21
Wohnort: Günzburg

Beitrag 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
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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.
Bild
gonimaus
Beiträge: 27
Registriert: 26.09.2004 14:21
Wohnort: Günzburg

Beitrag von gonimaus »

Ich habe auch unter VB gestöbert. Aber ich komme nicht weiter. Hat noch jemand einen Tip?

Gruß Gonimaus
Stefan
Beiträge: 125
Registriert: 29.08.2004 10:51
Kontaktdaten:

Beitrag 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
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag 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...
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

@GPI
Sogar Bios-Flashes unter Windoof sind möglich....
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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.

:mrgreen:
Bild
Win11 Pro 64-Bit, PB_6.11b1
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag 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).
Antworten