Einzelnen Beitrag anzeigen

_BlackDragon_

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

BIOS-Daten aus Speicher in ByteArray

  Alt 11. Jun 2008, 12: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