문서화 파트와 안티치트 제작 팀에서 맡고 먼저 문서화를 시작하였다

문서화.hwp

namedump 문서화 버젼

Gobject 보고서 작성

언리얼 엔진에서 내부 해킹을 시도할 때 GObject를 덤프하는 것은 매우 중요한 과정입니다. UObject와 GObject의 관계에 대해 설명하겠습니다. UObject는 개별 객체이며, GObject는 이러한 객체들을 추적하는 글로벌 배열입니다. GObject 배열은 모든 UObject 인스턴스를 포함하고 있으며, 이를 통해 엔진은 객체의 생명 주기와 메모리 사용을 효율적으로 관리할 수 있습니다. 또한 GObject는 모든 UObject 인스턴스의 중앙 저장소 역할을 하여 객체를 쉽게 검색하고 조작할 수 있습니다. 언리얼 엔진은 다양한 게임 객체를 메모리에 저장하고 관리합니다. 여기에는 캐릭터, 무기, 환경 요소 등이 포함되며, GObject는 이러한 객체들을 추적하는 데 사용되는 글로벌 객체 배열입니다. 따라서 GObject를 덤프하면 게임의 모든 객체를 탐색하고 식별할 수 있습니다. 이를 통해 특정 객체를 찾아내고, 그 객체의 메모리 주소를 얻어 원하는 조작을 할 수 있습니다. 또한, 언리얼 엔진의 많은 기능은 객체 메서드와 데이터 구조에 의존하기 때문에, GObject 덤프를 통해 이러한 메서드와 구조를 식별할 수 있습니다. 이는 특정 기능을 활성화하거나 비활성화하고, 게임 데이터를 수정하는 등의 작업을 가능하게 합니다. 유의할 점은 객체의 메모리 레이아웃이 버전마다 달라질 수 있다는 것입니다. 따라서 GObject 덤프를 통해 현재 게임 버전에서 객체들의 메모리 오프셋을 정확히 파악하여 특정 객체의 올바른 필드를 조작할 수 있습니다. 초기, Fnamedump를 시도하며 UObject에 대한 정보를 얻게 되었습니다.
이 Uobject에 접근하기 위해서는 시작점이 필요했습니다.

처음 접근은 Unreal Engine 5 공식문서로 시작했습니다.

Untitled

공식문서에 따르면 Uobject를 GUObjectArray로 관리한다고 되어 있습니다. 따라서 우리의 시작점은

GUObjectArray으로 정했습니다.

FUObjectArray

Untitled