From d063dbb7f2b9c859defc1aa2f21b242d8f1633e6 Mon Sep 17 00:00:00 2001 From: longpanda Date: Fri, 24 Jul 2020 23:02:07 +0800 Subject: [PATCH] fix a bug about injection plugin in GPT partition style. --- INSTALL/ventoy/vtoyjump32.exe | Bin 108544 -> 108544 bytes INSTALL/ventoy/vtoyjump64.exe | Bin 127488 -> 128000 bytes vtoygpt/vtoygpt.c | 2 +- vtoyjump/vtoyjump/vtoyjump.c | 53 ++++++++++++++++++++++++++- vtoyjump/vtoyjump/vtoyjump.h | 67 ++++++++++++++++++++++++++++++++++ 5 files changed, 119 insertions(+), 3 deletions(-) diff --git a/INSTALL/ventoy/vtoyjump32.exe b/INSTALL/ventoy/vtoyjump32.exe index 5cf9f3501b533b772efc923f18811e98a4f444a7..a2610ef0161e13baa0e826a62b339e8fe5a3ea3a 100644 GIT binary patch delta 9055 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 HzDxcO&tclu delta 8748 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 AiU0rr diff --git a/INSTALL/ventoy/vtoyjump64.exe b/INSTALL/ventoy/vtoyjump64.exe index d03af3c2c88165145012fca2bd27da74aab4ce7b..7881e63a9a324a9e05fa02994cecd892a58c8bdd 100644 GIT binary patch delta 21501 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 delta 21022 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[1].StartLBA; + free(pGpt); + } + else + { + Log("MBR partition style"); + StartSector = MBR.PartTbl[1].StartSectorId; + } + + Log("GetVentoyEfiPart StartSector: %llu", StartSector); + return StartSector; +} + int VentoyMountISOByImdisk(const char *IsoPath, DWORD PhyDrive) { int rc = 1; @@ -543,7 +592,7 @@ int VentoyMountISOByImdisk(const char *IsoPath, DWORD PhyDrive) } g_FatPhyDrive = hDrive; - g_Part2StartSec = (LengthInfo.Length.QuadPart - VENTOY_EFI_PART_SIZE) / 512; + g_Part2StartSec = GetVentoyEfiPartStartSector(hDrive); Log("Parse FAT fs..."); @@ -778,7 +827,7 @@ static int DecompressInjectionArchive(const char *archive, DWORD PhyDrive) } g_FatPhyDrive = hDrive; - g_Part2StartSec = (LengthInfo.Length.QuadPart - VENTOY_EFI_PART_SIZE) / 512; + g_Part2StartSec = GetVentoyEfiPartStartSector(hDrive); Log("Parse FAT fs..."); diff --git a/vtoyjump/vtoyjump/vtoyjump.h b/vtoyjump/vtoyjump/vtoyjump.h index b3699e64..01b96eed 100644 --- a/vtoyjump/vtoyjump/vtoyjump.h +++ b/vtoyjump/vtoyjump/vtoyjump.h @@ -72,6 +72,72 @@ typedef struct ventoy_windows_data UINT8 reserved[256]; }ventoy_windows_data; + + +typedef struct PART_TABLE +{ + UINT8 Active; // 0x00 0x80 + + UINT8 StartHead; + UINT16 StartSector : 6; + UINT16 StartCylinder : 10; + + UINT8 FsFlag; + + UINT8 EndHead; + UINT16 EndSector : 6; + UINT16 EndCylinder : 10; + + UINT32 StartSectorId; + UINT32 SectorCount; +}PART_TABLE; + +typedef struct MBR_HEAD +{ + UINT8 BootCode[446]; + PART_TABLE PartTbl[4]; + UINT8 Byte55; + UINT8 ByteAA; +}MBR_HEAD; + +typedef struct VTOY_GPT_HDR +{ + CHAR Signature[8]; /* EFI PART */ + UINT8 Version[4]; + UINT32 Length; + UINT32 Crc; + UINT8 Reserved1[4]; + UINT64 EfiStartLBA; + UINT64 EfiBackupLBA; + UINT64 PartAreaStartLBA; + UINT64 PartAreaEndLBA; + GUID DiskGuid; + UINT64 PartTblStartLBA; + UINT32 PartTblTotNum; + UINT32 PartTblEntryLen; + UINT32 PartTblCrc; + UINT8 Reserved2[420]; +}VTOY_GPT_HDR; + +typedef struct VTOY_GPT_PART_TBL +{ + GUID PartType; + GUID PartGuid; + UINT64 StartLBA; + UINT64 LastLBA; + UINT64 Attr; + UINT16 Name[36]; +}VTOY_GPT_PART_TBL; + +typedef struct VTOY_GPT_INFO +{ + MBR_HEAD MBR; + VTOY_GPT_HDR Head; + VTOY_GPT_PART_TBL PartTbl[128]; +}VTOY_GPT_INFO; + + + #pragma pack() @@ -84,5 +150,6 @@ typedef struct ventoy_windows_data }\ } +#define LASTERR GetLastError() #endif