mirror of https://github.com/x64dbg/btparser
68 lines
1.6 KiB
Plaintext
68 lines
1.6 KiB
Plaintext
|
1:
|
||
|
2:
|
||
|
3:
|
||
|
4:
|
||
|
5:
|
||
|
6:
|
||
|
7:
|
||
|
8:
|
||
|
9: typedef struct {
|
||
|
10: BYTE BootIndicator ;
|
||
|
11: BYTE StartHead ;
|
||
|
12: WORD StartSector : 6 ;
|
||
|
13: WORD StartCylinder : 10 ;
|
||
|
14: BYTE PartitionType ;
|
||
|
15: BYTE EndHead ;
|
||
|
16: WORD EndSector : 6 ;
|
||
|
17: WORD EndCylider : 10 ;
|
||
|
18: DWORD SectorsPrecedingPartion ;
|
||
|
19: DWORD SectorsInPartition ;
|
||
|
20: } MBRPARTITIONTABLE ;
|
||
|
21:
|
||
|
22:
|
||
|
23: typedef struct {
|
||
|
24: char SIGNATURE [ 8 ] ;
|
||
|
25: DWORD Revision ;
|
||
|
26: DWORD Headersize ;
|
||
|
27: DWORD CRC32OfHeader ;
|
||
|
28: DWORD Reserved ;
|
||
|
29: uint64 CurrentLBA ;
|
||
|
30: uint64 BackupLBA ;
|
||
|
31: uint64 FirstUsableLBA ;
|
||
|
32: uint64 LastUsableLBA ;
|
||
|
33: BYTE DiskGUID [ 16 ] ;
|
||
|
34: uint64 PartitionEntries ;
|
||
|
35: DWORD NumOfPartitions ;
|
||
|
36: DWORD SizeOfPartitionEntry ;
|
||
|
37: DWORD CRC32ofPartitionArray ;
|
||
|
38: BYTE reserved [ 420 ] ;
|
||
|
39: } GPT ;
|
||
|
40:
|
||
|
41: typedef struct {
|
||
|
42: BYTE PartitionTypeGUID [ 16 ] ;
|
||
|
43: BYTE PartitionGUID [ 16 ] ;
|
||
|
44: uint64 PartitionStartLBA ;
|
||
|
45: uint64 PartitionEndLBA ;
|
||
|
46: uint64 PartitionProperty ;
|
||
|
47: wchar_t PartitionName [ 36 ] ;
|
||
|
48: } GPTPAPTITIONTABLE < size = 128 > ;
|
||
|
49:
|
||
|
50: LittleEndian ( ) ;
|
||
|
51: struct {
|
||
|
52: BYTE bootcode [ 446 ] ;
|
||
|
53: MBRPARTITIONTABLE partitionTable [ 4 ] ;
|
||
|
54: WORD signature ;
|
||
|
55: } MBR < size = 512 > ;
|
||
|
56:
|
||
|
57:
|
||
|
58:
|
||
|
59:
|
||
|
60: if ( ( MBR . partitionTable [ 0 ] . PartitionType & 0xFF ) == 0xEE ) {
|
||
|
61: Printf ( "Protected MBR. GPT reserved" ) ;
|
||
|
62: GPT gptheader ;
|
||
|
63: GPTPAPTITIONTABLE table [ 128 ] ;
|
||
|
64: FSeek ( FileSize ( ) - sizeof ( GPT ) - sizeof ( GPTPAPTITIONTABLE ) * 128 ) ;
|
||
|
65: GPTPAPTITIONTABLE BackupTable [ 128 ] ;
|
||
|
66: FSeek ( FileSize ( ) - sizeof ( GPT ) ) ;
|
||
|
67: GPT Backupgptheader ;
|
||
|
68: } tok_eof
|