AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi BIOS-Daten aus Speicher in ByteArray
Thema durchsuchen
Ansicht
Themen-Optionen

BIOS-Daten aus Speicher in ByteArray

Ein Thema von _BlackDragon_ · begonnen am 11. Jun 2008 · letzter Beitrag vom 12. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#1

BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 13:46
Hallo Leute.

Ich versuche nun schon geraume Zeit, die BIOS-Daten aus dem RAM in einem ByteArray abzulegen. Leider
klappt das nicht so wie ich es gerne hätte. Orientiert habe ich mich am BiosHelper von NicoDe und auch an der SMBIOS-Spezifikation von DMTF. Die Forensuche und auch Google habe mich bis jetzt nicht weiter gebracht.

Ich weiß leider nicht wo mein Fehler liegt...

Delphi-Quellcode:
const
  SIZE_256K = $3FFFF;

  RomBiosDumpBase = Cardinal($000C0000);
  RomBiosDumpBasePtr = Pointer(RomBiosDumpBase);
  RomBiosDumpEnd = Cardinal($000FFFFF);
  RomBiosDumpEndPtr = Pointer(RomBiosDumpEnd);
  RomBiosDumpSize = Cardinal(RomBiosDumpEnd - RomBiosDumpBase + 1);
type
  {PByteArray in SysUtils.pas kann nur max. 32767 Bytes fassen, deshalb die "Eigenkreation"}
  TBigByteArray = array [0 .. SIZE_256K] of Byte;
  PBigByteArray = ^TBigByteArray;

...
var
  pba: PBigByteArray;
begin
  pba := RomBiosDumpBasePtr;

  fs := TFileStream.Create('G:\DUMP.BIOS', fmCreate);
  try
    for iIndex := 0 to SizeOf(pba^) do
    begin
      fs.Write(pba^[iIndex], SizeOf(Byte));
    end;
  finally
    FreeAndNil(fs);
  end;
Ich habe auch mal mit den Pointer-Adressen etwas rumgespielt. Allerdings ohne Erfolg
In der Datei, wenn denn mal was reingeschrieben wird, steht nur kauderwelsch, unter anderem auch Ordnernamen.

Ich vermute mal, dass ich falsch auf den Speicher zugreife. Vielleicht kann mir mal jemand den Zaun um die Ohren hauen.

Danke _BlackDragon_
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 14:22
Du kannst nicht einfach auf einen Physicalischen Speicherbereich zugreifen (zumindest nicht unter Windows). Schau dir mal genau Nico's Art und Weise an, wie er einen Bios-Dump erstellt. Dort findest du für die unterschiedlichen Windows-Versionen unter-
schiedliche Routinen. Unter NT-basierten System (WinNT, W2K, WinXP, Vista usw.) z.B. muß der gewünschte physikalische Speicherbereich erst in den logischen Speicherbereich gemappet werden, damit du drauf zugreifen kannst.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#3

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 14:39
Zitat von _BlackDragon_:
Ich versuche nun schon geraume Zeit, die BIOS-Daten aus dem RAM in einem ByteArray abzulegen.
Der entscheidende Punkt ist, dass der entsprechende Speicherbereich unter Windows NT gar nicht im Adressraum deines Prozesses abgebildet wird. Unter aktuellen Versionen von Windows NT hat man selbst als Administrator nicht mehr die Berechtigung den physikalischen Speicherbereich im Prozess abzubilden... Dafür wurde eine neue API eingeführt.

http://www.michael-puff.de/Developer...osHelp-3.0.zip
  Mit Zitat antworten Zitat
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#4

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 14:42
Hi.

Erstmal danke für die rasche Antwort.

Zitat:
Schau dir mal genau Nico's Art und Weise an, wie er einen Bios-Dump erstellt. Smile
Habe ich, leider blicke ich nicht ganz durch. Habe es allerdings auch nicht bis ins Detail gelesen,
da ich dachte, es würde auch so gehen wie oben beschrieben.

Zitat:
Unter NT-basierten System (WinNT, W2K, WinXP, Vista usw.) z.B. muß der gewünschte physikalische Speicherbereich erst in den logischen Speicherbereich gemappet werden, damit du drauf zugreifen kannst.
Hey, das hört sich gut an. Wo finde ich Einzelheiten darüber. MSDN ???

Danke.

_BlackDragon_
  Mit Zitat antworten Zitat
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#5

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 14:46
Uuppps...

Crosspost...

Dann kommt direkt auch noch eine Antwort vom "Meister" persönlich.

Jo, soweit war ich ja schon, zum mindest ansatzweise.

Ok, dann werde ich mich noch einmal durch die Source wühlen.

Danke euch beiden schonmal.

Gruss

_BlackDragon_
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#6

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 15:21
Zitat von _BlackDragon_:
Ok, dann werde ich mich noch einmal durch die Source wühlen.
Wühlen wäre zuviel des Guten. Die Unit exportiert im Interface nur ein paar Funktionen...

Delphi-Quellcode:
var
  Dump: TRomBiosDump;
begin
  if DumpRomBios(Dump) then
  begin
    //...
  end;
end;
Das war’s schon.
  Mit Zitat antworten Zitat
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#7

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 17:50
Hi.

Das benutzen der Unit bzw. der Funktionen ist mir schon klar. Allerdings
würde ich gerne verstehen was "dahinter" passiert.
Deshalb "wühlen".

Aber Danke erstmal, den Record mit den Daten (ByteArray) hab ich ja jetzt.

Ist es denn sicher, dass hier alle Daten, die auch in der SMBIOS-Spezifikation
beschrieben sind, drin stehen? Der gelesene Speicherbereich ist ja derselbe wie
in den Dokumenten...

Werde mich auf jedenfall nochmal mit dem Quellcode und der Spec auseinander setzen.

Gruss

_BlackDragon_
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 20:17
Nein. Die einzelnen Strukturen können sonstwo im Speicher (physikalisch) Stehen. Das ist auch ein Problem bei meinem
SMBIOS-Explorer (siehe Freeware-Sparte). In den meisten Fällen stehen die Angaben jedoch in dem Dump.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
_BlackDragon_

Registriert seit: 4. Dez 2007
Ort: Eschweiler
64 Beiträge
 
#9

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 22:07
Zitat:
Nein. Die einzelnen Strukturen können sonstwo im Speicher (physikalisch) Stehen.
Aha...

Zitat:
Das ist auch ein Problem bei meinem
SMBIOS-Explorer (siehe Freeware-Sparte).
Auf welche Art und Weise durchsuchst du denn den Dump? Nach bestimmten Strukturen?
Nach der Entry-Table (wie in der Spec beschrieben) ???
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 22:41
Ich gehe nach der Spezifikation. Zuerst den Entriepoint und dort ist hinterlegt, wo die einzelnen Strukturen Anfangen. Eine andere Möglichkeit wäre mir nicht bekannt
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz