FastFile 형식 연구 #1 (Container) Black Ops

으음... 전부터 심심하면 까보고 있던 건데 나중에 정리해야지... 정리해야지 하다가 이제서야 슬금슬금 정리하기 시작 -_-)...

일단 FastFile(*.ff) 파일은 크게 나누면 2가지 부분으로 분해할 수 있다.

1) Data Container Header (총 12바이트)
    이건 뭐... 간단 무식하게... 그냥 헤더다. -_-);
    구성은 대략 2가지 부분으로 나뉘는데 ff 파일 서명과 실제 데이터를 담고 있는 컨테이너의 버전으로써...
    Black Ops의 경우에는 모든 파일이 이 부분은 동일하다.

파일 서명:                I   W  f   f   u  1   0   0
파일 서명 16진수 값: 49 57 66 66 75 31 30 30


파일 버전:                   473
파일 버전 16진수 값: 00 00 01 D9


2) Data Chunk (파일 전체 크기 - 12바이트)
    이 부분이 실제로 중요한 부분인데...
    실제로 게임에서 사용되는 거의 대부분의 데이터가 이 부분에 "압축"되어 있다.
    근데 뭐... 압축 방식이 그냥 zlib라...
    SimplyZip이나 OffZip 같은 프로그램으로 풀어버리면 싹 다 풀린다.

일단 컨테이너 자체의 형식은 위에서 보듯이... Modern Warfare 1 이후로 별로 변한게 없다.
Modern Warfare 2 같은 경우는 Hack 방지용으로 멀티 플레이 파일에는 죄다 별도로 "암호화"가 걸려있었는데...
Black Ops는 아직 멀티 플레이쪽 파일을 안 봐서 모르겠다 -_-;;;
(내 알 바도 아니고...)

문제라면... Data Chunk쪽이 문제인데...
이 부분은 자료 구조를 깨기 매우 혈압 오르는 구조로 되어 있어서...
게임에서 사용하는 거의 대부분의 파일 형식을 죄다 "별도로" 분석해야 해서 시간이 매우, 심각하게 오래 걸리는 부분...
덤으로 Offset 계산을 File Offset이 아니라 Memory Offset으로 계산해놓는 바람에
Modding이나 한글화에 매우 혈압오르는 파일 구조라고 할 수 있겠다. -_-;

덧글

댓글 입력 영역