• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Как словить global-metadata.dat в игре?

  • Автор темы Автор темы fatumn
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
2 Май 2020
Сообщения
36
Реакции
1
Я хочу декомпилировать GameAssembly.dll через ILL2CPP Decompiler, но он говорит что метадата зашифрована (v29), на стороннем форуме я узнал что в игре есть функция, которая её декодит (логично), нашёл её в IDA через xrefs

C++:
Expand Collapse Copy
char __fastcall sub_180385640(_DWORD *a1, _DWORD *a2)
{
  __int64 v4; // rax
  unsigned __int64 v5; // kr00_8
  unsigned __int64 v6; // rax
  size_t v7; // rcx

  v4 = sub_180336E70("global-metadata.dat");
  qword_1839D7858 = v4;
  if ( v4 )
  {
    v5 = *(v4 + 172);
    qword_1839D7860 = v4;
    *a1 = v5 / 0x28;
    v6 = *(v4 + 180) >> 6;
    dword_1839D7628 = v5 / 0x28;
    v7 = dword_1839D7628;
    *a2 = v6;
    qword_1839D7630 = j_j__calloc_base(v7, 0x18ui64);
    qword_1839D7650 = j_j__calloc_base(*(qword_1839D7870 + 48), 8ui64);
    qword_1839D7658 = j_j__calloc_base(*(qword_1839D7860 + 164) / 0x58ui64, 8ui64);
    qword_1839D7640 = j_j__calloc_base(*(qword_1839D7860 + 52) >> 5, 8ui64);
    qword_1839D7638 = j_j__calloc_base(*(qword_1839D7870 + 64), 8ui64);
    sub_1803864E0(sub_180385EC0, sub_1803858B0);
    LOBYTE(v4) = 1;
  }
  return v4;
}

В этой строке, видно что вызывается некоторая функция и результат сохраняется в перменную v4
v4 = sub_180336E70("global-metadata.dat");
Я так предполагаю что это не функция декода, а просто считывание содержимого файла. Вот тут я и застрял, что искать как и в какой момент. Если подскажите буду очень благодарен =)
 
Ты мало анализируешь, можно перейти по функции считывания или чего, и посмотреть что она делает, для того чтобы укрепить свои догадки. Когда наводишь курсор на переменную в псевдокоде, то она показывает что за регистр служит переменной, что тебе нужно сделать: 1. поставить брейкпоинт на
return v4 2. Посмотреть регистр отвечающий за v4, в нем скорее всего содержится указатель на расшифрованную память. 3. Посмотреть дальше по коду в каком регистре содержится длина global-metadata.dat 4. Сдампить память. PROFIT. Вы великолепны
 
Назад
Сверху Снизу