언리얼 엔진 게임 분석 정리

평소에 언리얼엔진으로 만들어진 게임을 분석할 일이 없다보니 이번 기회에 간단하게 분석을 진행해보기로 했습니다. 진행하면서 찾아봤던 내용을 깊게 들어가지 않고 소개 정도로 마칩니다.

리소스 분석

언리얼 엔진으로 만들어진 게임은 윈도우 빌드 기준으로 .pak파일과 .exe파일이 나오게 됩니다.
.pak파일은 UnrealPakTool 을 이용하여 언팩을 진행할 수 있습니다.
언팩을 하고 나면 .uasset이나 .uexp등의 파일부터 게임에 쓰이는 대화 내용등이 저장된 리소스 들을 볼 수 있습니다.

하지만, 대부분 .pak파일이 암호화되어있으며 .exe파일을 분석하여 암호화 키를 얻는 과정이 선행되어야 합니다.

직접 동적 디버깅을 하면서 AES 암호화 키를 추출도 가능하며,
https://blog.jamie.holdings/2019/03/23/reverse-engineering-aes-keys-from-unreal-engine-4-projects/

관련 코드 패턴 부분을 찾아서 AES 암호화 키를 추출 하는것도 존재했습니다.
https://github.com/allcoolthingsatoneplace/dumpPakKey/blob/master/dumpPakKey.py

.uasset등의 파일은 umodel로 열면 간단히 분석할 수 있습니다.

class dump

안드로이드의 경우 apk를 디컴파일하면 나오는 lib폴더에 있는 libUE4.so파일을 분석합니다.
UE4Dumper 를 이용하면 class 오브젝트 소스코드를 획득 가능합니다.

윈도우의 경우 *-Win64-shipping.exe 프로그램을 분석합니다.
UnrealDumper-4.25를 이용하거나 아래 문서를 참고하여 Shh0yaUEDumper를 수정하여 class 오브젝트 소스코드를 획득합니다.
https://shhoya.github.io/ue_generator.html

패킷 분석

HTTP기반 API 통신은 charlesmitmproxy를 이용하여 SSL을 까서 분석합니다.
SSL Pinning이 되어있을 경우에는 관련 로직 부분을 분석하여 우회해줘야합니다.

소켓 통신은 위에서 class dump한 내용을 기반으로 암복호화 로직이 존재하는지 확인하고, 프로토콜을 분석하여 패킷을 해석하면 됩니다.

Share