언리얼 엔진 Pak 우선순위 및 서명 검증 차단 매트릭스
언리얼 엔진 4 및 5(UE4 / UE5)로 개발된 게임들은 3D 모델, 텍스처, 사운드, 블루프린트 에셋을 압축 컨테이너인 .pak 파일 또는 최신 IoStore 아키텍처의 .utoc/.ucas 파일로 패키징합니다. 최신 게임 업데이트에서 디지털 서명(.sig 파일) 검증이나 ZenLoader 청크 제약이 활성화된 경우, 단순히 ~mods 폴더에 모드 파일을 넣는 것만으로는 모드가 완전히 씹히거나 게임 시작 즉시 강제 종료됩니다.
| 에셋 패키징 형태 | 모드 주입 경로 | 필수 바이패스/후킹 수단 | 주요 미지원 결함 증상 |
|---|---|---|---|
| 레거시 표준 Pak | Content\Paks\~mods | 별도 조치 불필요 (알파벳 정렬 순) | 서명 검증이 없는 게임에서 즉시 적용 |
| 서명 검증 Pak (.sig 필수) | Content\Paks\~mods | 더미 .sig 파일 생성 또는 UE4SS 패치 | 모드가 적용되지 않거나 실행 시 크래시 |
| IoStore 컨테이너 (.ucas/.utoc) | Content\Paks\~mods | 엔진 빌드 TOC 버전과 일치 필수 | 오류: ChunkIndex != INDEX_NONE |
| 복합 블루프린트 로직 주입 | Binaries\Win64 | 언리얼 엔진 스크립팅 시스템(UE4SS) | DLL 인젝터 누락 시 모드 작동 완전 불가 |
1단계: 마운트 우선순위와 파일 네이밍 규칙
언리얼 엔진 가상 파일 시스템은 파일명을 아스키(ASCII) 코드 순서대로 정렬하여 로드합니다:
- 게임 데이터 폴더로 이동합니다:
[게임설치폴더]\Content\Paks\
- 해당 위치에 정확히
~mods라는 이름의 새 폴더를 생성합니다 (물결표~기호는 일반 영숫자보다 뒤에 위치하므로 원본 리소스를 덮어쓰는 우선권을 갖습니다). - 모드 파일명 앞에
z_또는 높은 숫자를 붙여 정렬 순위를 높입니다:
pakchunk0-WindowsNoEditor_z_CustomSkin_P.pak
- 파일명 끝의
_P표시는 언리얼 엔진에 이 파일이 높은 우선순위의 '패치(Patch)'임을 선언하는 규격입니다.
2단계: .sig 디지털 서명 검증 차단 바이패스
모드가 적용되지 않는다면 엔진이 서명되지 않은 Pak 파일을 거부하고 있는 상태입니다:
방법 1: 공식 .sig 파일 복제 위장
- 원본
Content\Paks폴더에서 가장 용량이 작은 공식.sig파일을 찾습니다 (예:pakchunk0-WindowsNoEditor.sig). - 이 파일을
~mods폴더로 복사합니다. - 파일명을 적용할 모드 Pak 파일명과 동일하게 변경합니다:
pakchunk0-WindowsNoEditor_z_CustomSkin_P.sig
방법 2: UE4SS를 활용한 메모리 서명 검증 패치
엄격한 암호화 해시 검증이 걸려 있는 최신 게임의 경우:
- 대상 게임용
UE4SS를 다운로드하여 실행 파일이 위치한Binaries\Win64에 압축을 풉니다. UE4SS-settings.ini파일을 열고 설정을 활성화합니다:
[General]
EnableSigScanner = 1
- 게임 실행 시 인젝터가 메모리에서
FPakFile::CheckSignature함수를 스캔하여 무조건 True를 반환하도록 변조하여 서명 체크를 우회합니다.
3단계: IoStore (ucas/utoc) 컨테이너 충돌 대응
UE5 기반 IoStore 게임 환경:
- 다운로드한 모드가
.pak,.ucas,.utoc3종 세트로 구성되어 있는지 확인합니다. - IoStore 전용 게임에 단일 레거시
.pak파일만 넣을 경우Assertion failed: ContainerID에러를 내며 튕기므로 모드 제작자가 배포한 최신 전용 버전을 설치해야 합니다.