리버스 엔지니어링 게임 파일

소개


프랑스 mmorpg Dofus에서 온 리버스 엔지니어링 게임 파일 보기
앞에서 d2i를 토론한 글에서 나는 어떻게 문서를 반전시키고 그 구조를 이해하는지에 대한 사고 과정을 언급하지 않았다.나는 이것이 몇몇 사람들의 흥미를 불러일으킬 수 있다고 생각한다.
이것은 이전 문장의 배후 사고 과정이다. http://medericburlet.com/dofus-d2i-reverse-engineering/

d2i 파일 정보


시뮬레이션 게임인 Dofus와bot에 대해 일을 한 후에 나는 무기 이름, 대화, 지도, 음악 등 정보가 로컬 파일에 저장되어 있다는 것을 알았다.
나는 d2i 파일이 npc 대화를 담당하는 파일이라는 것을 알고 그것들을 이해해 보기로 결정했다.너는 내가 여기서 찾은 같은 파일을 사용하여 본 강좌를 배울 수 있다. i18n_fr.d2i

패턴 식별


비디오 게임을 사용하고 있다는 것을 알고 있습니다. 데이터는 읽기 쉬운 방식으로 저장해야 합니다. 그렇지 않으면 로컬에서 사용할 필요가 없습니다.어쨌든 현지 게임 자원의 원칙은 로드 시간을 가속화하는 것이다.
나의 첫 번째 방법은 atom에서 파일을 여는 것이다. 만약 운이 좋다면, 그것은 JSON 같은 읽을 수 있는 파일일 것이다.결과는 문서의 일부분이 읽을 수 있다는 것을 증명했다.다행히도 이것은 데이터가 암호화되지 않았다는 것을 의미한다.

그러나 그 중 일부 줄은 전혀 읽을 수 없다.

나의 다음 단계는 그것을 16진 편집기에 여는 것이다. 왜냐하면 혼란스러운 텍스트는 읽을 수 있는 텍스트 형식이 아니라는 것을 의미하기 때문이다.
파일을 열면 16진 편집기에 있는 것이 눈길을 끈다!
적어도 하나의 보이는 패턴이 있다!나는 그것이 무엇을 대표하는지 모르겠고, 그것을 어떻게 설명해야 할지 모르겠지만, 적어도 희망은 있다.

우리는 오른쪽 판넬에 중복이 있는 것을 똑똑히 볼 수 있다. 만약 우리가 16진수 데이터를 본다면, 우리는 00 또는 00001로 끝나는 많은 2바이트 그룹을 볼 수 있다.

16진수 데이터 이해


그래서 나는 우선 파일의 시작을 보기로 결정했다. 첫 번째 문자열의 시작은 4바이트와 2바이트 뒤에 있다는 것을 알아차렸다.

이 숫자는 3, 2바이트 정수나 1, 4바이트 정수와 2바이트 정수 1개가 쉽기 때문에 매우 행운으로 보인다.
내가 아직 서류의 시작을 보고 있을 때, 나는 또 다른 재미있는 일을 알아차렸다.파일의 첫 번째 문자열은 두 번 (빨간색) 쓰여졌습니다. 문자열을 구성하기 시작한 네 바이트 그룹에는 읽을 수 없는 두 바이트 (파란색) 가 있습니다.

0022를 int로 변환하면 34가 됩니다. 문자열의 길이입니다.더 나아가 모든 문자열은 2바이트의 정수로 시작하고, 이 정수는 문자열의 길이를 지정합니다.
만약 우리가 이전 4바이트를 int로 간주한다면 숫자: 26343905(0191F9E1)
모든 문자열 목록의 끝에 도달할 때까지 모든 바이트를 선택하면 같은 숫자를 얻을 수 있습니다.따라서 d2i 파일의 앞 4 바이트는 문자열 데이터의 크기를 나타냅니다.

만약 우리가 다음 4바이트를 정수: 1957787(001DDF9B)로 간주한다면, 이것은 우리를 다른 문자열 목록의 시작으로 인도할 것이다

16진법 지침.잠깐만 뭐???


네, 지금 우리가 해야 할 일은 심심하거나 재미있는 일입니다.만약 우리가 첫 번째 문자열 목록의 끝으로 돌아간다면, 우리는 16진 데이터에 패턴이 있다는 것을 알아차릴 것이다.첫 번째 4바이트 그룹은 바로 이런 완벽한 집합이다. 0000001
만약 우리가 자세히 관찰한다면 하나의 패턴을 발견할 수 있을 것이다.

여기서 볼 수 있듯이 우리는 값이 점차적으로 증가하는 원칙이 ID와 같다. 이것은 의미가 있다. 왜냐하면 이 파일들은 게임의 데이터 저장이기 때문이다.
또한 각 ID 다음에 반복되는 01도 알아차렸습니다. 다음 ID 이전에 8바이트가 더 있습니다. 이것도 두 개의 숫자로 쉽게 볼 수 있습니다.
4(000000 4) 및 40(00000028)
그곳에서 나는 단지 나의 직감에 따라 ID 01일 뿐이다. 우리는 숫자 4를 얻었다. 이것은 우리의 파일에서 첫 번째 문자열의 위치이다.만약 우리가 데이터 크기의 앞의 4바이트를 계산한다면, 위치는 4이다.두 번째 숫자 40은 처음에 40바이트를 보면 첫 번째 문자열과 같지만 대문자나 중음 기호가 없습니다.
그 중에서 나는 다음과 같은 형식을 공제했다. 이것은 나의 이전 블로그 게시물에서 설명한 것이다. http://medericburlet.com/dofus-d2i-reverse-engineering/

ID(주황색), 음조 기호가 있습니까?(청색), 문자열 포인터(갈색), 음조 포인터(파란색)
그리고 두 번째 ID로 두 번째 문자열에 해당하는지 확인합니다.거기서 나는 간단한 해석기를 써서 성숙한 독자가 되었다. https://github.com/crimson-med/FastD2IReader

결론


이것은 나로 하여금 논리를 사용하게 하고 나의 환경을 이해하게 하며 나의 직감을 따르게 하는 매우 흥미롭고 재미있는 도전이다.중요한 것은 파일이 게임에서 왔기 때문에 읽기 시간과 접근성이 똑같이 중요하다는 것을 명심해야 한다.

진홍색 의학 / FastD2IReader


금식d2i(d2i) Dofus 파일 리더기는 파일에 대한 역방향 프로젝트를 기반으로 합니다.


FastD2IReader


역방향 공사했어.Dofus에서 온 d2i 파일은 재미를 위해 간단한 리더를 만들기로 했습니다.
이것은 2.10 버전에 기초한 것이다.

어떻게 사용합니까


새로운 FastReader로 Dim MyReader("MyFile.d2i", True)
나의 독자.GetText(41903)
나의 독자.Dispose()

정상 및 빠른 로드


정상 부하:


빠른 로드:


Fichiers D2I


소개


Le format D2I est un format utilis é par Ankama pour stocker des cha înes de caractères(string)comme par 예시 les noms d'items ou dialogue et plus.Ce fichier varie en fonction de la langue mais la structure reste la même.

La 구조


르페실


Le fichier est lui composéen 4개 주요 계약자:
  • Les 데이터
  • Les 지수
  • Les UI 메시지
  • de l'extra data
  • Chacune des ces parties sont compos és d'un Index (4 바이트) donnant la taille des donn és qui suifent hormis l'extra data.

    Les 데이터


    Les Data sont eux compos é s de 3 쪽:
  • View on GitHub
    자료 출처: http://medericburlet.com/reverse-engineering-gaming-files-d2i-from-dofus/

    좋은 웹페이지 즐겨찾기