IoStore를 사용하며 sig우회가 안되는 언리얼 게임 모드 로딩 우회하기
조건은 다음과 같습니다.
1. IoStore를 사용한다. (utoc이 존재함)
2. Pak 내 파일을 수정한다. (locres같은 경우)
3. 실행 옵션으로 -fileopenlog를 줘도 모드가 로딩되지 않는다.
버전별 세부 작동 조건은 확인해보지 않았으며,
작동 테스트 게임은 Fossilfuel 2 Demo입니다. (언리얼 5.1.1버전)
0. 필요 파일
- DB Sparking Zero UTOC Signature Bypass Patch ( https://www.nexusmods.com/dragonballsparkingzero/mods/18?tab=files&file_id=20 )
- AESDumpster ( https://github.com/GHFear/AESDumpster/releases )
- 게임 버전에 맞는 언리얼 엔진
- (필요에 따라) UnrealLocres ( https://github.com/akintos/UnrealLocres/releases )
1. Fmodel에 불러오기, (선택) 암호화 해제
Fmodel 상단 Directory - Selector - 하단에 Name과 게임 경로를 적고 우측 + 버튼을 누릅니다.
그럼 위 사진처럼 언리얼 엔진 버전을 선택 가능하며, OK를 누를 시 Fmodel App이 껐다 켜집니다.
Fmodel로 로드를 해보면, 좌측 하단 콘솔에 암호화된 아카이브가 있다고 나옵니다.
AES 암호화 키를 찾아봅시다.
{게임이름}/Binaries/Win64에 가보면 게임 이름으로 시작하는 exe 파일이 있습니다.
게임 exe 파일을 다운받은 AESDumpster에다가 드래그 & 드랍하면 위처럼 콘솔창에 키가 나옵니다. 엔트로피가 큰 키를 일단 씁시다.
위 키를 Fmodel 상단 메뉴 - Directory - AES를 누르면 나오는 윈도우에다
0x~ 형식으로 입력하시면 AES 암호화 해제가 끝납니다.
2. 파일 추출 및 수정
Fmodel로 수정할 파일을 추출해줍시다.
위 경우, locres를 추출하였으며, 좌측 하단 INFORMATION에서 이 파일이 pak파일 안에 들어있다는 것을 알아냈습니다.
pak 안에 들어있다는 것은, 별 공을 들이지 않고 수정이 가능하다는 소리입니다.
UnrealLocres.exe를 locres파일이 있는 폴더로 옮긴 후,
bat 파일을 만들거나 명령어를 직접 치시거나 해서 locres 파일을 수정합니다.
:: export.bat (locres to csv) 명령어
UnrealLocres.exe export Game.locres -f csv -o Game_export.csv
pause
:: import.bat (csv to locres) 명령어
UnrealLocres.exe import Game.locres Game_export.csv -f csv -o Game_edited.locres
pause
import 후, Game_edited.locres만 남기고 모두 삭제한 후, Game_edited.locres를 Game.locres로 이름을 바꿔주면 됩니다.
3. 모드 파일 패키징
Fmodel/Output/Exports의 {게임이름}폴더를 언리얼엔진 폴더로 옮깁니다.
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
set "currentDir=%cd%"
set "targetDir=%~1"
> "lista.txt" (
for /r "%targetDir%" %%F in (*) do (
set "tmp=%%~dpF"
set "fname=%%~nxF"
set "tmp=!tmp:%currentDir%=../../..!"
set "tmp=!tmp:\=/!"
set "tmp=!tmp!!fname!"
echo "!tmp!"
)
)
endlocal
Engine\Binaries\Win64\UnrealPak.exe "../../../Fossilfuel_2-Windows_P.pak" ^
-Create="../../../lista.txt" ^
-Compress
pause
pack-v11.cmd의 내용입니다.
위 코드를 cmd 파일로 저장합니다.
다음과 같은 창이 뜨면서 모드 제작이 완료됩니다.
4. UTOC Signature Bypass Patch 적용
{게임이름}/Binaries/Win64에 다운받은 파일의 압축을 풉니다.
끝입니다.
5. 작동확인
일단, 모드 pak파일 이외엔 아무것도 건들지 않은 상태입니다.
sig파일 복사 붙여넣기도 안했고, -fileopenlog 인수도 주지 않은 상태입니다.
수정한 부분들이 모두 정상작동합니다.