조건은 다음과 같습니다.
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 인수도 주지 않은 상태입니다.


수정한 부분들이 모두 정상작동합니다.
'한글패치 관련 짧은 글들' 카테고리의 다른 글
global-metadata.dat이 없는 경우의 덤프법 (frida 이용) (0) | 2025.03.23 |
---|---|
UnityPy를 이용한 유니티 게임 MonoBehaviour 특정 텍스트 필드 추출/삽입 (0) | 2025.03.04 |
유니티 게임에서 대사 검색 쉽게 하기 (UnityPy 이용) (0) | 2025.01.01 |
catalog.json과 catalog.hash가 있는 유니티 게임의 수정법 (1) | 2024.12.18 |
번역을 위한 유니티 Il2cpp 게임의 복호화/암호화 (0) | 2024.12.18 |
조건은 다음과 같습니다.
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 인수도 주지 않은 상태입니다.


수정한 부분들이 모두 정상작동합니다.
'한글패치 관련 짧은 글들' 카테고리의 다른 글
global-metadata.dat이 없는 경우의 덤프법 (frida 이용) (0) | 2025.03.23 |
---|---|
UnityPy를 이용한 유니티 게임 MonoBehaviour 특정 텍스트 필드 추출/삽입 (0) | 2025.03.04 |
유니티 게임에서 대사 검색 쉽게 하기 (UnityPy 이용) (0) | 2025.01.01 |
catalog.json과 catalog.hash가 있는 유니티 게임의 수정법 (1) | 2024.12.18 |
번역을 위한 유니티 Il2cpp 게임의 복호화/암호화 (0) | 2024.12.18 |