Team of 4
August 2024 - December 2024
Skills Utilized: Python, Unreal Engine, Binary Manipulation
August 2024 - December 2024
Skills Utilized: Python, Unreal Engine, Binary Manipulation
Introduction
I enjoyed playing Abiotic Factor and wanted more of my friends to experience it, but the lack of Korean language support was a barrier. While the game supported eight languages, Korean wasn’t one of them. So, I decided—why not create a patch myself?
I began analyzing the game files and discovered that many texts and images weren’t exposed for localization. To work around this, I directly modified binary .uasset files and dealt with Unreal Engine’s IO Store files (.utoc and .ucas) as well as .pak archives. Using various tools, I unpacked and repacked these files and extracted .usmap data from the game.
Through this process, I gained a deeper understanding of how Unreal Engine packs and stores game assets.
GitHub Link: https://github.com/yeshjho/abiotic_factor_korean
Showcase
Technical Highlights
Overwriting Texts and Encoding
When replacing text with Korean, the game failed to display it correctly. Suspecting an encoding issue, I created a test Unreal Engine project and discovered that the game stored text in UTF-16 with the size recorded as a negative integer. Understanding this allowed me to properly overwrite text while maintaining compatibility.
UObject and Export Map Entry Manipulation
For assets containing multiple UObjects, such as levels and widgets, Unreal Engine stores individual object offsets and sizes within an export map. Modifying text changed the size of these entries, requiring me to adjust offsets for all subsequent entries to maintain file integrity.
Extracting Images and Dialogue Audio Files
Using CUE4Parse, I iterated through the game’s archive files, performed type checks, and decoded and extracted image and audio assets.
Conclusion
Through this project, I gained a deeper understanding of how Unreal Engine packs and stores files, as well as the intricacies of binary file manipulation. This experience strengthened my ability to analyze and modify game assets at a low level, enhancing my skills in reverse engineering and data structure handling.
No comments:
Post a Comment