GPT 헤더 손상 복구 테스트

gpt-header-damage-recovery-test

A GPT 헤더 손상 복구 테스트 손상된 파티션 메타데이터를 남아 있는 백업으로 복원할 수 있는지 묻습니다. 아래에 제시된 생성된 예시에서 볼 수 있듯이, 백업 헤더와 해당 엔트리 배열이 유효하고 의도된 레이아웃을 정확히 기술하고 있다면 복원이 가능합니다. 그러나 헤더 CRC가 일치한다고 해서 파티션 테이블이 사용 가능하다는 것을 보장하지는 않습니다. 이 실험에서는 헤더 체크섬 검사를 통과하는 두 가지 반례를 포함하여 총 7가지 메타데이터 상태를 계산합니다. 그런 다음 백업에서 기본 GPT를 재구성한 후, 그 결과를 기준값과 비교하여 검증합니다.

목차

연구 질문 및 범위

질문은 구체적입니다. GPT 디스크의 시작 부분 근처에서 정의된 변경 사항이 발생한 후, 남아 있는 메타데이터를 통해 원래의 기본 GPT를 재구성할 수 있습니까?

이 제어된 바이트 단위 테스트는 메모리 내에서 GPT 메타데이터를 생성하고, 정의된 변경 사항을 적용한 뒤, 변경되지 않은 기준값과 비교하여 결과로 도출된 체크섬, 위치 필드 및 재구성 결과를 검증합니다.

이 테스트는 파티션 맵의 무결성을 평가합니다. 즉, 각 GPT 사본이 유효한지, 남아 있는 백업으로 재구성이 가능한지, 그리고 재구성된 메타데이터가 기준값과 일치하는지 여부를 확인합니다. 실험의 기반이 되는 필드 정의에 대해서는 GPT 헤더 구조 및 CRC32 안내서.

기준 구성 및 가정

참조 구성은 64 MiB 크기의 논리 디스크 예시입니다. 이 간결한 레이아웃 덕분에 주소를 쉽게 파악할 수 있으며, GPT 헤더 및 엔트리 배열에 대한 변경 사항이 미치는 영향을 분리할 수 있습니다.

매개변수

기준 구성

논리적 용량

67,108,864 바이트; 131,072 논리 블록

논리 블록 크기

512바이트

파티션 구성 방식

GPT 개정판 1.0; 보호용 MBR

헤더 및 배열 크기

92바이트 헤더; 각각 128바이트인 128개의 항목

활성 파티션

LAB-DATA라는 이름의 Microsoft Basic 데이터 항목 하나

파티션 내용

전체 범위 무결성 검사를 위한 결정론적 바이트 패턴

Microsoft Basic 데이터 항목은 파티션 범위와 용도를 설명합니다. 이 항목의 페이로드는 결정론적인 바이트 패턴을 따르므로, 손상 전과 복구 후의 데이터를 정확히 비교할 수 있습니다.

비교 결과의 확장 가능한 계산 노트에는 메타데이터 위치, 사용 가능한 경계 및 활성 파티션의 정확한 범위가 모두 표시됩니다. 모든 LBA는 이 논리 디스크의 시작 지점을 기준으로 합니다. 논리 블록 주소 지정 안내서 이를 바이트 오프셋으로 변환하는 방법을 설명합니다.

실험 절차

라벨 S0–S6 결과 및 시나리오 선택기에서 사용된 7개의 생성된 샘플 상태를 확인하십시오. 이들은 하나의 디스크에 대해 연속적으로 수행된 손상 작업이 아닙니다. S0은 변경되지 않은 기준 상태이며, S1~S5는 각각 S0의 독립적인 복사본에서 시작됩니다. 오직 S6만이 S3에서 시작됩니다.

모든 변경 사항은 일회용으로 생성된 복사본에 적용되었습니다. 필요한 데이터가 포함된 드라이브에서는 이러한 삭제 작업을 수행하지 마십시오.

S0 — 기준 상태: 두 GPT 사본 모두 손상되지 않음.

보호용 MBR, 주 헤더 및 백업 헤더, 그리고 동일한 항목 배열을 생성합니다. 체크섬, 위치 필드, 배열 차원 및 파티션 경계를 검증합니다. 이 변경되지 않은 상태를 모든 비교의 기준점으로 유지합니다.

S1 — 기본 헤더 바이트가 손상되었습니다.

기본 헤더의 첫 번째 항목을 변경합니다. 디스크 GUID 헤더를 기준으로 한 오프셋 위치의 바이트 +0x38 에서 33 에 32. 저장된 헤더의 CRC는 변경하지 마십시오. 두 배열, 백업 헤더 및 파티션 내용을 모두 변경하지 마십시오. 이렇게 하면 헤더와 CRC 간의 불일치를 특정할 수 있습니다.

S2 — 기본 헤더가 없습니다.

LBA 1에 있는 512바이트 블록을 0으로 채웁니다. 주 어레이와 전체 백업 GPT는 그대로 유지합니다. 주 헤더에 식별 가능한 서명이 없을 경우, 남아 있는 백업이 유효한 재구성 소스를 제공하는지 확인합니다.

S3 — 1차 진입 배열이 손상되었습니다.

LBA 2에 있는 기본 배열의 0번 항목에서, 항목 상대 오프셋에 있는 이름 바이트를 변경하십시오. +0x38 에서 4C 에 4D, L을 M으로 변경합니다. 두 헤더는 모두 변경하지 마십시오. 이렇게 하면 주 헤더의 CRC는 여전히 통과하는 상태에서 배열 CRC 불일치만 분리할 수 있습니다.

S4 — 두 헤더 모두 누락됨.

LBA 1 및 LBA 131071에 위치한 주 헤더 블록과 백업 헤더 블록을 0으로 대체하십시오. 두 엔트리 배열과 파티션 내용은 모두 보존하십시오. 이는 유효한 헤더가 하나도 남아 있지 않은 상황에서 재구성의 한계를 테스트하는 것입니다.

S5 — 헤더를 수정 없이 복사했습니다.

백업 헤더 블록을 LBA 1에 그대로 복사하십시오. 위치 필드나 체크섬을 변경하지 마십시오. 이는 유효한 헤더 CRC가 잘못된 주 주소와 공존할 수 있는지 확인하기 위한 것입니다.

S6 — S3를 기반으로 재구축된 기본 GPT.

S3에 정의된 어레이 손상부터 시작합니다. 검증된 백업에서 주 어레이를 복원하고, 백업 헤더의 위치 필드를 주 어레이 측에 맞게 조정한 다음, 헤더 CRC를 재계산합니다. 재구성된 메타데이터를 S0과 바이트 단위로 비교합니다.

각 상태에 대해 헤더 CRC, 배열 CRC 및 위치 관계를 별도로 확인하십시오. 헤더가 누락되면 관련 검사를 수행할 수 없으며, CRC가 일치한다고 해서 유효한 GPT가 보장되는 것은 아닙니다. SHA-256을 포함한 전체 파티션 내용 범위를 S0과 별도로 비교하십시오. 통과 조건은 파티션 내용 범위가 보존된 일관된 GPT 레이아웃입니다.

GPT 헤더 손상 복구 테스트 결과

아래에 표시된 세 개의 렌더링된 화면은 화면 상단의 헤더 영역을 동일하게 유지합니다. 행에 표시된 바이트를 따라가 보세요. +0030, 칼럼 08—헤더 오프셋 +0x38—그리고 저장된 헤더 CRC와 계산된 헤더 CRC를 비교합니다. 각 뷰에서는 체크섬 및 재구성 검사에 사용된 것과 동일한 샘플 바이트를 표시합니다.

기본 GPT 손상 테스트: 손상 발생 전

기본 기본 헤더에는 다음 내용이 포함되어 있습니다. 33 에서 DiskGUID +0x38. 저장된 헤더 CRC와 계산된 헤더 CRC가 일치합니다. 주 어레이와 백업 GPT도 유효한 것으로 확인되었습니다.

gpt-header-before-damage

GPT 헤더 16진수 비교: 1바이트가 변경된 후

S1은 다음에서 해당 바이트만 변경합니다. 33 에 32. 저장된 헤더 CRC는 변함이 없지만, 계산된 CRC는 다릅니다. 빨간색 테두리는 변경된 바이트를 표시하고, 음영 처리된 체크섬 바이트는 업데이트되지 않은 값을 나타냅니다. 이 정의된 레이아웃에서 유효한 백업은 여전히 재구성 가능한 소스로 남아 있습니다.

gpt-header-after-damage

GPT 헤더 백업 복구 실험: 재구성 후

재구성은 주 위치에 대한 검증된 백업 헤더를 적용하고 해당 체크섬을 재계산합니다. 설명된 바이트는 33; 저장된 CRC와 계산된 CRC가 다시 일치합니다. 전체 바이트 비교 결과, 재구성된 기본 메타데이터가 기준값과 일치하는 것으로 확인되었습니다. 이렇게 계산된 S1에서 기준값으로의 전환은 아래에서 설명할 어레이 손상을 복구하는 S6과는 별개의 과정입니다.

gpt-header-after-reconstruction

배열 손상: 헤더 CRC가 통과되었다고 해서 충분하지 않은 이유

S3는 엔트리 배열에서 첫 번째 파티션 이름 문자를 L에서 M으로 변경합니다. 헤더 바이트는 변경되지 않으므로 헤더의 CRC는 통과하지만 배열의 CRC는 실패합니다. S6는 백업 배열을 복원하고 주 헤더를 재구축하여 원래의 메타데이터를 기준 상태로 되돌립니다.

그리고 GPT 파티션 항목 배열 안내서 이 이름이 헤더가 아닌 배열에 속하는 이유를 설명합니다.

해석을 바꾸는 오류 조건

접혀진 시나리오 테이블은 나머지 검사 항목을 유지합니다. 주 헤더가 없는 경우(S2), 손상되지 않은 백업 헤더를 통해 여전히 재구성이 가능합니다. 두 헤더가 모두 없는 경우(S4), 정의된 배열은 남아 있더라도 재구성 소스가 될 유효한 헤더가 남아 있지 않습니다. 마지막으로, 백업 헤더를 LBA 1에 그대로 복사하면(S5) 유효한 CRC는 보존되지만, 주 위치 필드는 잘못된 상태로 남게 됩니다.

이러한 결과들은 일치하는 체크섬과 일관된 파티션 맵을 구별해 줍니다. 유효한 재구성을 위해서는 체크섬과 위치 관계가 의도된 레이아웃과 일치해야 합니다.

아래의 시나리오 탐색기를 사용하여 Hex에 포함된 7개 상태를 모두 비교해 보세요. S0부터 시작하여 S1~S6 사이를 전환하며, CRC 및 위치 검사와 함께 기본 헤더와 엔트리 배열 발췌 부분을 확인해 보세요. 빨간색은 S0과 다른 바이트를 표시하며, S6의 녹색은 기준값과 일치하는 재구성된 필드를 나타냅니다.

백업 GPT는 언제 주 GPT를 재구축할 수 있나요?
헤더 CRCPASS
배열 CRC실패
위치 확인PASS
GPT 백업유효
배열 +0x38 위치의 첫 번째 기본 항목 이름 바이트: 4C → 4D.
주 헤더의 CRC는 통과했으나, 해당 배열의 CRC는 실패했으며, 백업은 유효한 상태를 유지합니다.
주 헤더 · 92바이트 · LBA 1
OFFSET000102030405060708090A0B0°C0D0E0FASCII
+00004546492050415254000001005C000000EFI PART....\...
+0010B5AC7A86000000000100000000000000..z.............
+0020FFFF0100000000002200000000000000........".......
+0030DEFF0100000000003322110055447746........3"..UDwF
+00408899AABBCCDDEEFF0200000000000000................
+00508000000080000000C0E8F8B0............
Primary array · entry 0, offsets +0x30–+0x3F · LBA 2
+003000000000000000004D00410042002D00........M.A.B.-.
Red = changed from baseline · Green = restored field in S6 · Offsets are relative to each structure.
CRC values and all seven scenarios
Selected header · stored → calculated
0x867AACB5 → 0x867AACB5
Referenced array · stored → calculated
0xB0F8E8C0 → 0x21E2966D
시나리오헤더 CRC배열 CRC위치GPT 백업Calculated interpretation
S0 · 기준선PASSPASSPASS유효Both GPT copies validate.
S1 · 헤더 비트 반전실패PASSPASS유효Backup header and array remain usable for reconstruction.
S2 · 메인 헤더가 없습니다UnavailableUnavailableUnavailable유효Backup header and array remain usable for reconstruction.
S3 · 주 배열 손상됨PASS실패PASS유효주 헤더의 CRC는 통과했으나, 해당 배열의 CRC는 실패했으며, 백업은 유효한 상태를 유지합니다.
S4 · 두 헤더 모두 누락됨UnavailableUnavailableUnavailableMissingNo valid header remains; automatic header-to-header reconstruction is unsupported.
S5 · 블라인드 백업 사본PASSPASS실패유효CRC passes, but MyLBA and primary array placement fail.
S6 · 1차 기어 재조립PASSPASSPASS유효Primary GPT equals the baseline; both copies validate.

Header CRC: 92 bytes with +0x10–+0x13 zeroed. Array CRC: 128 × 128 = 16,384 bytes. Location checks validate MyLBA and primary-array placement. Missing headers make these checks unavailable.

Generated 64 MiB sample · 512-byte blocks · header and entry bytes switch with the scenario; checks are precomputed.

Why the Results Follow from the Mechanism

UEFI 2.11, Section 5.3.2 defines separate header and entry-array checks. The header CRC covers 헤더 크기 bytes with 헤더 CRC32 temporarily zeroed. The array CRC covers NumberOfPartitionEntries × SizeOfPartitionEntry bytes. Location checks add information that neither checksum supplies.

In this sample, S1 changes a header-CRC input. S3 changes an array-CRC input. S5 preserves the header-CRC input but violates the primary location requirements. These controlled differences explain the three distinct validation outcomes shown in the explorer.

The sample also explains why the primary and backup header checksums differ at baseline: their location-dependent fields differ. Identical arrays can share a checksum while their associated headers do not.

Practical Interpretation and Limitations

On a real disk, first preserve the source and identify the correct device by model or serial number, capacity, and logical block size. Perform any proposed metadata writes on a disposable working copy. A USB bridge, a resized image, or a truncated acquisition can change the address context; do not substitute this sample’s last LBA for the actual device boundary.

Next, establish whether a surviving backup describes the intended current layout. A correct CRC detects certain byte changes; it does not prove freshness or authenticity. UEFI specifically warns about stale backup GPT metadata after a disk has been reformatted for legacy MBR use. Conflicting copies require investigation before either is accepted as authoritative.

Microsoft’s Windows and GPT FAQ provides background on GPT redundancy and CRC protection. Recovery behavior depends on the operating system, the tool, and platform policy. Confirm which GPT copy a tool accepts and which metadata ranges it proposes to change before approving a repair.

After metadata reconstruction, confirm the expected partition boundaries, inspect the file system without modifying the source, and verify representative files against known copies where available. For a system disk, follow this with a boot check on the intended target. These checks establish file accessibility and startup readiness after the partition map has been validated.

When File Recovery Comes Before GPT Repair

When a partition disappears or its volume becomes inaccessible, securing important files may take priority over writing changes to the GPT. Magic Data Recovery’s lost-partition workflow can scan for recoverable files, preview supported file types, and save selected data to another drive. After recovering the files you need, assess the partition layout and plan any metadata repair on a working copy. Keep file recovery and GPT reconstruction as separate tasks, with separate checks for recovered files and partition-table integrity.

결론

이 GPT 헤더 손상 복구 테스트 demonstrates how a valid backup can support reconstruction after primary-header corruption or loss. In the tested sample, restoring the entry array and adapting the header’s location fields returned the primary GPT to its baseline bytes. The decisive condition is that the surviving backup header and its associated array both validate and describe the intended partition layout.

The comparisons also show why a passing header CRC32 is insufficient: entry-array damage can leave the header checksum unchanged, while an unmodified backup header can retain a valid checksum at the wrong location. Reliable GPT recovery therefore requires agreement between header checksums, array checksums, and location fields. After reconstruction, verify partition boundaries, file-system access, and important files separately; system disks also need a boot check. A restored partition map establishes metadata consistency, while these additional checks determine whether the disk is usable again.

FAQ About GPT Header Damage and Recovery

GPT 헤더가 손상되었는지 어떻게 확인할 수 있나요?

읽기 전용 파티션 테이블 검사를 사용하여 서명, 헤더 크기, 헤더 CRC, 위치 필드 및 관련 항목 배열 CRC를 확인하십시오. 오프셋을 해석하기 전에 장치의 논리 블록 크기를 확인하십시오. 16진수 비교를 통해 변경된 바이트를 파악할 수 있지만, 주 헤더와 백업 헤더의 위치 필드와 체크섬이 서로 다른 것은 정상적인 현상입니다.

손상된 GPT 헤더를 백업 파일에서 복구할 수 있나요?

네, 백업 헤더와 그 엔트리 배열이 유효하고 의도된 현재 파티션 레이아웃을 정확히 나타낼 때 그렇습니다. 재구성 과정에서는 위치에 따라 달라지는 필드를 조정하고 적절한 헤더 체크섬을 계산해야 합니다. 백업 헤더를 변경 없이 주 위치로 단순히 복사하는 것만으로는 충분하지 않습니다. 그 주소들이 여전히 백업 측을 가리키고 있기 때문입니다.

백업된 GPT에는 삭제된 파티션이 그대로 남아 있나요?

백업 GPT는 파티션 메타데이터의 중복 사본일 뿐, 이전 레이아웃의 기록이 아닙니다. 파티션을 올바르게 업데이트하면 백업도 함께 업데이트됩니다. 따라서 백업에는 삭제된 파티션의 항목이 더 이상 포함되어 있지 않을 수 있습니다. 두 사본의 내용이 일치하지 않는 경우, 재구성을 위해 어느 쪽을 사용할지 결정하기 전에 어떤 레이아웃이 올바른지 확인해야 합니다.

GPT 헤더 복구를 통해 데이터 손실 없이 파일을 복구할 수 있나요?

파티션 메타데이터를 복구하면 올바른 파티션 경계, 파일 시스템 및 파일 내용이 그대로 유지된 경우 액세스를 복원할 수 있습니다. 이 작업은 덮어쓴 데이터를 복원하거나, 암호화된 볼륨을 복호화하거나, 손상된 파일 시스템을 자동으로 복구하지는 않습니다. 변경을 적용하기 전에 원본을 보존하고 작업용 사본을 검토하십시오. 메타데이터 복구에 성공했다고 해서 파일이 완전히 복구된다는 보장은 없습니다.

주 GPT 헤더와 백업 GPT 헤더가 모두 손상된 경우에는 어떻게 될까요?

두 사본 모두 무결성이 확인되기 전까지는 유효한 헤더 소스로 사용할 수 없습니다. 남아 있는 항목 배열이나 파일 시스템 구조는 파티션 경계를 재구성하는 데 도움이 될 수 있지만, 추가적인 검증이 필요합니다. 두 헤더 모두 확인되지 않는다고 해서 파일 내용이 모두 손실되었다고 단정할 수는 없습니다. 추측에 근거한 경계를 원본 장치에 기록하는 것은 피하십시오.

GPT 헤더 복구를 어떻게 안전하게 테스트할 수 있을까요?

일회용 테스트 장치나 기준값이 기록된 작업용 복사본을 사용하십시오. 정확히 정의된 메타데이터 범위를 변경하기 전에 해당 장치의 식별 정보, 용량 및 논리 블록 크기를 확인하십시오. 재구성된 파티션 맵을 기준값과 비교한 다음, 파일 시스템 액세스 및 부팅 동작을 각각 평가하십시오. 필요한 데이터가 포함된 드라이브에 의도적으로 손상을 일으키지 마십시오.

GPT 헤더를 복구하면 Windows 부팅 오류가 해결될까요?

손상된 파티션 맵이 오류의 원인인 경우 도움이 될 수 있지만, 그 외의 부팅 요건들도 충족되어야 합니다. 마이크로소프트의 UEFI/GPT 파티션 요건에서는 EFI 시스템 파티션의 역할을 설명하고 있습니다. GPT 메타데이터가 올바르다고 해서 필요한 파티션과 부팅 파일이 사용 가능하다는 것을 보장하는 것은 아니며, 정상적인 부팅을 위해서는 별도의 검증이 필요합니다.

바실리는 이 분야에서 약 10년간 실무 경험을 쌓은 데이터 복구 전문가입니다. 그는 경력 전반에 걸쳐 삭제된 파일, 포맷된 드라이브, 손실된 파티션 및 RAW 파일 시스템과 관련된 수천 건의 복잡한 사례를 성공적으로 해결했습니다. 그의 전문 지식은 헥스 에디터와 같은 전문 도구를 사용한 수동 복구 방법과 복구 소프트웨어를 사용한 고급 자동화 솔루션을 모두 다룹니다. 바실리의 사명은 IT 전문가와 일반 사용자 모두에게 신뢰할 수 있는 데이터 복구 지식을 제공하여 소중한 디지털 자산을 보호할 수 있도록 돕는 것입니다.