Volymstartpost

Från Wikipedia, den fria encyklopedin
Hoppa till navigation Hoppa till sökning

Högre halvan av bilden: Schematisk framställning av en volymstartpost (partitionering enligt MBR -specifikationerna. Till vänster en huvudstartpost)

Volymstartposten [1] [2] omfattar de första sektorerna i en volym för filsystemen FAT (inklusive FAT32 och exFAT), HPFS och NTFS från Microsoft . Eftersom en volym mycket ofta är en partition av en hårddisk eller ett annat lagringsmedium, kallas den första sektorn också som partitionsstartsektor [1] [3] [4] , eller som en del av VBR även kallad volymstartssektor [ 1] [5] . Med ett startbart medium används startkoden i VBR för att starta operativsystemet som är lagrat i respektive filsystem på en BIOS -baserad dator med en eller flera MBR -partitioner med hjälp av kedjeladdningsprincipen .

Launcher

Historiskt sett hade de första IBM -datorerna inte partitioner. Operativsystemet PC DOS eller MS-DOS eller CP / M startade från en diskett som hade en startsektor med en storlek på 512 byte. Detta motsvarar storleken på en sektor eller det första spåret (spår 0 ). Först med införandet av variabla geometrier, dvs olika media, tillkom ett alternativ i startsektorn för att ta hänsyn till ändrade förhållanden: BIOS -parameterblocket (kortfattat BPB).

Med filsystemen FAT12 och FAT16 är VBR exakt en sektor i storlek. Den innehåller all information som krävs för att starta operativsystemet, samt en startladdare , vars programkod använder denna information för att hitta startfilerna i filsystemet och köra dem med hjälp av kedjeladdningsprincipen . För MS-DOS är detta t.ex. B. filen IO.SYS .

För startladdaren spelar det emellertid ingen roll om VBR faktiskt är startsektorn eller om den redan har laddats med hjälp av kedjelastningsprincipen - så är det alltid när filsystemet finns inom en partition på lagringsmediet. Standardfallet är då en Master Boot Record som startsektor, programkoden kan hittas och den aktiva partitionen som finns i partitions boot -sektorn ( engelsk partition boot sektor) laddas. Den första sektorn är därför inte fritt användbar för filsystemet som finns på den, men den är en reserverad del av den som en volymstartssektor . Villkoren är därför synonymer för VBR när det faktiskt bara täcker den första sektorn.

Med filsystemen HPFS, NTFS, FAT32 och exFAT är storleken på en sektor, 512 byte, dock inte längre tillräcklig för programkoden, så att dessa filsystem använder flera sektorer. En av anledningarna till detta är att BPB är större med FAT32 [6] och därför finns det mindre utrymme kvar för startladdaren. Termen engelsk volymstartssektor är fortfarande begränsad till den första sektorn, medan volymstartpost (VBR) står för alla sektorer som används.

För datorer som inte använder BIOS krävs inget startprogram och därför körs inte heller programkoden i VBR. Detta är z.Detta är till exempel fallet med datorer som använderUEFI som firmware. [7] Programkoden används inte heller om ett operativsystem redan har startats och öppnar ett filsystem. Beroende på operativsystem och filsystemdrivrutin kan dock BIOS -parameterblocket utvärderas.

Konstruktion av en VBR

Följande stycke beskriver en FAT32 VBR, som (utan kopia ) har 3 sektorer om 512 byte vardera. Med NTFS har VBR vanligtvis 16 sektorer.

Sektor 0 i VBR

Följande tabell visar strukturen för sektor 0 för en VBR. De enskilda funktionsbyten räknas som en förskjutning från början av VBR.

Offset längd
(Bytes)
beskrivning
0x00 3 Hoppa kommando till bootloader (EB xx 90 eller E9 xx xx, förutom Atari )
0x03 8: e OEM | systemnamn
0x0B 2 Byte per sektor (vanligtvis 512; 1024, 2048 eller 4096 tillåtet)
0x0D 1 Sektorer per kluster (2 n med n = {1..64}. N = 128 ska inte användas)
0x0E 2 Antal reserverade sektorer (inklusive startsektor). 1 för FAT12 / 16 *, 32 för FAT32.
0x10 1 Antal FAT (bör alltid vara 2).
0x11 2 Maximalt antal poster i huvudkatalogen. Bör vara 0 för FAT32 (obegränsad), 512 för FAT16, annars multiplicerat med 32 en multipel av byte per sektor.
0x13 2 Antal alla sektorer i partitionen. Om 0 är värdet 0x20. Måste vara == 0 för FAT32, annars bara 0 om tal> = 64 K.
0x15 1 Media -identifierare. 0xF8 (hårddisk) .. 0xFF är tillåtna.
0x16 2 Antal sektorer per FAT. Med FAT32 == 0 (är vid 0x24).
0x18 2 Antal sektorer per spår för BIOS INT13. Vanligtvis endast relevant för media med en geometri - adressering av cylinder / huvud / sektor (C / H / S).
0x1A 2 Antal huvuden för BIOS INT13. Vanligtvis endast relevant för media med en geometri - C / H / S -adressering.
0x1C 4: e Antal sektorer som ligger framför denna partition (även känd som "dolda sektorer"). För media utan MBR (t.ex. diskett) 0. OS -specifikt. Vanligtvis endast relevant för media som är synliga via BIOS INT13.
0x20 4: e Antal sektorer i partitionen. Om 0 är värdet 0x13. Måste vara! = 0 för FAT32, annars bara! = 0 om> = 64K.
0x24 4: e Endast FAT32: antal sektorer per FAT.
0x24 1 Endast FAT12 / 16: fysiskt enhetsnummer för BIOS INT13 (0 + n ... diskett n, 0x80 + n .. hårddisk n). OS -specifikt.
0x25 1 Endast FAT12 / 16: reserverad (används av NT).
0x26 1 Endast FAT12 / 16: utökad startsignatur: Om == 0x29 finns följande tre fält.
0x27 4: e Endast FAT12 / 16: Volym -ID (vanligtvis en kombination av datum och tid).
0x2B 11 Endast FAT12 / 16: Volymnamn (vadderat med mellanslag, t.ex. 'NO NAME').
0x36 8: e Endast FAT12 / 16: Filsystem -ID (vadderat med mellanslag: 'FAT', 'FAT12' eller 'FAT16'). Har bara en informell karaktär, dvs ska inte användas för att bestämma FAT -typen!
0x24 4: e Endast FAT32: antal sektorer per FAT.
0x28 2 Endast FAT32: FAT bit switch:

15: 8 .. reserverad
7 .. 0 => FAT speglas i alla andra FAT under körning. 1 => endast en FAT är aktiv.
6: 4 .. reserverat.
3: 0 .. Antal aktiva FAT (0 baserat) om spegling är avaktiverad (se bit 7).

0x2A 2 Endast FAT32: filsystemversion (HI -byte: major, LO -byte: minor)
0x2C 4: e Endast FAT32: startkluster för huvudkatalogen (a priori 2).
0x30 2 Endast FAT32: Sektornummer för filsysteminformationssektorn inom det reserverade området (med Microsofts operativsystem alltid == 1).
0x32 2 Endast FAT32: Om! = 0, starta (sektornummer) av kopian av VBR: erna inom det reserverade området (a priori 6).
0x34 12: e Endast FAT32: reserverad.
0x40 1 Endast FAT32: fysiskt enhetsnummer för BIOS INT13 (0 + n ... diskett n, 0x80 + n .. hårddisk n). OS -specifikt.
0x41 1 Endast FAT32: Reserverad (används av NT).
0x42 1 Endast FAT32: Utökad startsignatur: Om == 0x29 finns följande tre fält.
0x43 4: e Endast FAT32: Volym -ID (vanligtvis en kombination av datum och tid).
0x47 11 Endast FAT32: Volymnamn (vadderat med mellanslag, t.ex. 'NO NAME').
0x52 8: e Endast FAT32: Filsystem -ID (vadderat med mellanslag: 'FAT32'). Har bara en informell karaktär, dvs ska inte användas för att bestämma FAT -typen!
0x5A 324 MSDOS5.0: Bootloader programkod. Startar ofta efter BIOS -parameterblocket (BPB: FAT12 / 16 0x0B..0x3D, FAT32 0xB..0x59 inklusive) och kan ha delar i VBR [2], i filsystemets normala dataområde eller till och med i normalt osynliga / oanvända sektorer disken (t.ex. virus). Positionen, innehållet och storleken på följande 3 fält som ges som ett exempel för MSDOS5.0 kan också variera beroende på bootloader -versionen och språket.
0x19E 67 MSDOS5.0: Felmeddelanden för bootloader
0x1E6 11 MSDOS5.0: Operativsystemets kärnnamn ('IO SYS')
0x1F1 11 MSDOS5.0: Systemfilnamn ('MSDOS SYS')
0x1FC 2 Reserverad: 0x00 0x00
0x1FE 2 Startsignatur 0x55 0xAA

Sektor 1: FSInfo -sektor (endast med FAT32)

FSInfo -sektorn bör hjälpa operativsystemet att hitta nästa lediga kluster snabbare. De för närvarande fria klustren i partitionen och vilket kluster som är eller kan vara lediga nästa sparas. Informationen är endast avsedd som en referens för operativsystemet och behöver inte vara korrekt!

Byte 0 - 3 FSInfo -signatur 0x52 0x52 0x61 0x41 ( RRaA )
Byte 4 - 483 reserverad
Byte 484 - 487 andra signaturen 0x72 0x72 0x41 0x61 ( rrAa )
Bytes 488 - 491 fria kluster (behöver inte vara rätt!)
Byte 492 - 495 nästa fria kluster (behöver inte vara rätt!)
Byte 496 - 507 reserverad
Byte 508-511 0x55 0xAA

FSInfo -sektorn är inte nödvändig för att FAT32 ska fungera smidigt.

Sektor 2 i VBR

Sektor 2 i VBR har ingen användning för tillfället. Det ger ytterligare minne för startkod om sektor 0 inte hade tillräckligt med minnesutrymme för startkoden. Om den fullständiga startkoden redan finns i sektor 0 förblir sektor 2 tom förutom de två sista byten i offset 0x5FE och 0x5FF, som i sin tur innehåller det magiska talet 0x55 0xAA.

Kopia av VBR

En säkerhetskopia av alla tre sektorer av VBR skapas i sektorerna 6 till 8 under FAT32 -filsystemet. Dessa kan användas för att återställa om VBR är skadad. Vanliga formateringsprogram skriver vanligtvis inte över denna säkerhetskopia, så att helt enkelt formatering av en partition och tillhörande nyskapande av en FAT inte garanterar säker borttagning av all data på partitionen.

Andra filsystem

I princip är volymstartposten oberoende av vilket filsystem som används. Det finns dock inget datafält i BIOS -parameterblocket (BPB) som skulle indikera filsystemet som används. I praktiken användes därför inte VBR av andra filsystem, men startsektorn eller spår 0 av en volym är reserverad för nästan alla filsystem. Till exempel använder varken ext2 eller ReFS [8] en VBR.

webb-länkar

Individuella bevis

  1. a b c Technopedia - Volume Boot Record (VBR). Hämtad 11 juni 2020 .
  2. Christopher C. Yang et al.: Intelligence and Security Informatics: IEEE ISI 2008 International Workshops: PAISI, PACCF och SOCO 2008 . 2008, s.   306 (engelska).
  3. NTFS Partition Boot Sector. Hämtad 11 juni 2020 .
  4. ^ Sean K. Daily: Optimering av Windows NT . 1998, s.   719 .
  5. ^ Steve Bunting: EnCase® Computer Forensics: The Official EnCE®: EnCase® Certified Examiner Study Guide . 2008, s.   36 (engelska).
  6. http://www.ntfs.com/fat-boot-modif.htm
  7. https://www.incibe-cert.es/en/blog/bootkits-en
  8. http://www.resilientfilesystem.co.uk/refs-volume-boot-record