Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

i3BaseDx.dll : i3ResourceFile__Save

-

Общение разработчиков

- Программирование для Point Blank, общение и обсуждение разработок

Ответ
 
Опции темы
Старый 25.03.2012, 13:53   #1
 Разведчик
Аватар для Felixx3452
 
Felixx3452 скоро будет известенFelixx3452 скоро будет известенFelixx3452 скоро будет известенFelixx3452 скоро будет известен
Регистрация: 18.11.2011
Сообщений: 2
Популярность: 310
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию i3BaseDx.dll : i3ResourceFile__Save

Как я понимаю, тут происходит сохранение заголовка файла i3pack и всего остального. Если разгадать это, то можно спокойно написать прогу подобную корейской i3packTools. Приглашаю всех заинтересованных, и кому просто нечем заняться или хотят помоч, к совместному гаданию

Конечно без IDA и тд и тп не обойтись, но кому интересно выложу декомпил с IDA.
Код:
int __thiscall i3ResourceFile__Save(void *this, int a2)
{
  int v2; // ebx@1
  int v3; // esi@1
  unsigned __int8 v4; // zf@1
  unsigned __int8 v5; // sf@1
  int v6; // eax@6
  int v7; // ecx@6
  int i; // ebx@7
  int v9; // ebx@9
  int v10; // ebp@10
  int v11; // ST38_4@11
  int v12; // eax@11
  int v13; // eax@13
  int j; // ebx@17
  int v15; // eax@23
  int v16; // eax@26
  signed int v17; // ecx@26
  int v18; // eax@28
  int v19; // eax@28
  int v20; // ebp@28
  __int64 v21; // qax@28
  int v22; // ecx@28
  int v23; // ebp@28
  int v24; // ecx@28
  char v25; // zf@30
  int v26; // ebx@32
  int v27; // eax@37
  int v28; // ebx@39
  unsigned __int8 v29; // zf@39
  unsigned __int8 v30; // sf@39
  int v31; // ebp@40
  void (__cdecl *v32)(_DWORD, _DWORD, _DWORD); // eax@42
  int v33; // ebx@44
  int v34; // eax@44
  int v35; // edx@44
  int v36; // eax@44
  int v37; // eax@44
  int v38; // ecx@44
  int v39; // eax@44
  int v40; // eax@44
  int v41; // ecx@44
  int v42; // ST38_4@46
  int v43; // eax@46
  int v44; // eax@51
  int v45; // ecx@53
  unsigned __int8 v46; // sf@53
  unsigned __int8 v47; // of@53
  void (__cdecl *v48)(_DWORD, _DWORD); // ecx@58
  void *v49; // eax@61
  const char *v51; // [sp+28h] [bp-1ACh]@20
  int v52; // [sp+50h] [bp-184h]@1
  int v53; // [sp+54h] [bp-180h]@34
  int v54; // [sp+58h] [bp-17Ch]@1
  int v55; // [sp+5Ch] [bp-178h]@1
  int v56; // [sp+60h] [bp-174h]@44
  int v57; // [sp+64h] [bp-170h]@44
  int v58; // [sp+68h] [bp-16Ch]@28
  int v59; // [sp+6Ch] [bp-168h]@1
  int v60; // [sp+80h] [bp-154h]@7
  int v61; // [sp+90h] [bp-144h]@8
  char v62; // [sp+C4h] [bp-110h]@13
  unsigned int v63; // [sp+1C4h] [bp-10h]@1
  int v64; // [sp+1D0h] [bp-4h]@1

  v63 = (unsigned int)&v52 ^ __security_cookie;
  v3 = (int)this;
  v2 = 0;
  v54 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 48))(a2);
  v55 = 0;
  *(_DWORD *)(v3 + 56) = a2;
  *(_DWORD *)(v3 + 92) = 1;
  i3List__i3List((int)&v59, 8);
  v4 = *(_DWORD *)(v3 + 80) == 0;
  v5 = *(_DWORD *)(v3 + 80) < 0;
  v64 = 0;
  if ( !(v5 | v4) )
  {
    do
      (*(void (__thiscall **)(int *, _DWORD))(v59 + 16))(&v59, *(_DWORD *)(*(_DWORD *)(v3 + 96) + 4 * v2++));
    while ( v2 < *(_DWORD *)(v3 + 80) );
  }
  if ( *(_DWORD *)(v3 + 344) )
  {
    if ( i3List__IndexOf((int)&v59, *(_DWORD *)(v3 + 344)) == -1 )
      i3List__Add(&v59, *(_DWORD *)(v3 + 344));
    v6 = *(_DWORD *)(v3 + 344);
    v7 = *(_DWORD *)(v6 + 16) & 1;
    *(_DWORD *)(v6 + 16) &= 0xFFFFFFFEu;
    v55 = v7;
  }
  (*(void (__thiscall **)(int, _DWORD))(*(_DWORD *)(v3 + 60) + 32))(v3 + 60, 0);
  for ( i = 0; i < v60; ++i )
    (*(void (__stdcall **)(int))(**(_DWORD **)(v61 + 4 * i) + 16))(v3 + 60);
  v64 = -1;
  i3List___i3List((int)&v59);
  (*(void (__thiscall **)(int))(*(_DWORD *)(v3 + 16) + 32))(v3 + 16);
  v9 = 0;
  if ( *(_DWORD *)(v3 + 80) <= 0 )
    goto LABEL_66;
  do
  {
    v10 = *(_DWORD *)(*(_DWORD *)(v3 + 96) + 4 * v9);
    if ( *(_BYTE *)(v10 + 16) & 1 )
    {
      v11 = (int)i3NamedElement__s_pClassMetai3NamedElement;
      v12 = (**(int (__thiscall ***)(_DWORD))v10)(v10);
      if ( !i3ClassMeta__IsTypeOf(v12, v11) || !*(_BYTE *)(v10 + 20) )
      {
        v13 = (**(int (__thiscall ***)(_DWORD))v10)(v10);
        sprintf(&v62, "%s_%08X", *(_DWORD *)(v13 + 12), v10);
        (*(void (__thiscall **)(int, char *, signed int))(*(_DWORD *)(v3 + 16) + 16))(v3 + 16, &v62, -1);
      }
    }
    ++v9;
  }
  while ( v9 < *(_DWORD *)(v3 + 80) );
  if ( *(_DWORD *)(v3 + 80) <= 0 )
  {
LABEL_66:
    i3Error__SetEnv(0, 926, (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)", 0);
    i3Error__Log("Asserted : %s", "m_ObjList.GetCount() > 0");
  }
  for ( j = 0; j < *(_DWORD *)(v3 + 80); ++j )
    (*(void (__stdcall **)(int))(**(_DWORD **)(*(_DWORD *)(v3 + 96) + 4 * j) + 12))(v3 + 16);
  if ( (*(int (__thiscall **)(int, _DWORD, signed int))(*(_DWORD *)a2 + 36))(a2, "I3R2", 4) == -1 )
  {
    i3Error__SetEnv(
      (int)"..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp",
      944,
      (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)",
      2);
    v51 = "Could not write I3R2 file header.";
    goto LABEL_21;
  }
  v17 = 184;
  v16 = v3 + 152;
  do
  {
    *(_BYTE *)v16++ = 0;
    --v17;
  }
  while ( v17 );
  v19 = *(_DWORD *)(v3 + 36);
  *(_WORD *)(v3 + 156) = 1;
  *(_WORD *)(v3 + 158) = 8;
  *(_DWORD *)(v3 + 160) = v19;
  *(_DWORD *)(v3 + 164) = 184;
  *(_DWORD *)(v3 + 168) = 0;
  LODWORD(v21) = i3StringList__GetBufferSize((void *)(v3 + 16));
  v22 = *(_DWORD *)(v3 + 164);
  v21 = (signed int)v21;
  *(_DWORD *)(v3 + 172) = v21;
  LODWORD(v21) = *(_DWORD *)(v3 + 80);
  *(_DWORD *)(v3 + 188) = 0;
  v23 = 7 * v21;
  *(_DWORD *)(v3 + 176) = HIDWORD(v21);
  v24 = *(_DWORD *)(v3 + 172) + v22;
  *(_DWORD *)(v3 + 180) = v21;
  LODWORD(v21) = *(_DWORD *)(v3 + 344);
  *(_DWORD *)(v3 + 184) = v24;
  v20 = 4 * v23;
  v58 = v20;
  *(_DWORD *)(v3 + 192) = v20;
  *(_DWORD *)(v3 + 196) = 0;
  *(_DWORD *)(v3 + 200) = i3ResourceFile__GetObjectPersistID(v3, v3, v21);
  *(_DWORD *)(v3 + 204) = 0;
  v18 = (*(int (__thiscall **)(int, int, signed int))(*(_DWORD *)a2 + 36))(a2, v3 + 152, 184);
  if ( v18 == -1 )
  {
    i3Error__SetEnv(
      (int)"..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp",
      965,
      (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)",
      2);
    v51 = "Could not write I3R file header.";
    goto LABEL_21;
  }
  v25 = *(_DWORD *)(v3 + 176) == 0;
  v52 = v18;
  if ( !v25 || *(_DWORD *)(v3 + 172) )
  {
    (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)a2 + 44))(a2, v54 + *(_DWORD *)(v3 + 164), 1);
    v26 = i3mem__Alloc(*(_DWORD *)(v3 + 172), 0, 16, "..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp", 978);
    if ( !v26 )
    {
      i3Error__SetEnv(0, 979, (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)", 0);
      i3Error__Log("Asserted : %s", "pTemp != NULL");
    }
    i3StringList__CopyToBuffer(v3 + 16, v26, *(_DWORD *)(v3 + 172), 0);
    v53 = (*(int (__thiscall **)(int, int, _DWORD))(*(_DWORD *)a2 + 36))(a2, v26, *(_DWORD *)(v3 + 172));
    if ( v53 == -1 )
    {
      i3mem__Free((void *)v26);
      i3Error__SetEnv(
        (int)"..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp",
        987,
        (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)",
        2);
      i3Error__Log("Could not write string table information.");
      goto LABEL_22;
    }
    i3mem__Free((void *)v26);
    v52 += v53;
  }
  (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)a2 + 44))(a2, v54 + *(_DWORD *)(v3 + 184), 1);
  v27 = i3mem__Alloc(v20, 0, 16, "..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp", 1003);
  *(_DWORD *)(v3 + 148) = v27;
  if ( (*(int (__thiscall **)(int, int, int))(*(_DWORD *)a2 + 36))(a2, v27, v20) == -1 )
  {
    i3Error__SetEnv(
      (int)"..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp",
      1008,
      (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)",
      2);
    v51 = "Could not write object directory.";
    goto LABEL_21;
  }
  (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 48))(a2);
  v28 = 0;
  v29 = *(_DWORD *)(v3 + 80) == 0;
  v30 = *(_DWORD *)(v3 + 80) < 0;
  v53 = 0;
  if ( v30 | v29 )
  {
LABEL_55:
    (*(void (__thiscall **)(int, int, signed int))(*(_DWORD *)a2 + 44))(a2, v54 + *(_DWORD *)(v3 + 184), 1);
    if ( (*(int (__thiscall **)(int, _DWORD, int))(*(_DWORD *)a2 + 36))(a2, *(_DWORD *)(v3 + 148), v20) != -1 )
    {
      v48 = *(void (__cdecl **)(_DWORD, _DWORD))(v3 + 348);
      if ( v48 )
        v48(*(_DWORD *)(v3 + 352), *(_DWORD *)(v3 + 80));
      goto LABEL_23;
    }
    i3Error__SetEnv(
      (int)"..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp",
      1073,
      (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)",
      2);
    v51 = "Could not update object directory information.";
LABEL_21:
    i3Error__Log(v51);
    goto LABEL_22;
  }
  v31 = 0;
  while ( 1 )
  {
    v32 = *(void (__cdecl **)(_DWORD, _DWORD, _DWORD))(v3 + 348);
    if ( v32 )
      v32(*(_DWORD *)(v3 + 352), v28, *(_DWORD *)(v3 + 80));
    v33 = *(_DWORD *)(*(_DWORD *)(v3 + 96) + 4 * v28);
    v34 = (**(int (__thiscall ***)(_DWORD))v33)(v33);
    v35 = *(_DWORD *)(v3 + 16);
    v57 = v34;
    v56 = v35 + 12;
    v36 = i3ClassMeta__GetPersistClassName(v34);
    *(_DWORD *)(*(_DWORD *)(v3 + 148) + v31) = (unsigned __int16)(*(int (__thiscall **)(int, int))v56)(v3 + 16, v36);
    v37 = (*(int (__thiscall **)(int))(*(_DWORD *)a2 + 48))(a2);
    v38 = v37 - v54;
    v39 = *(_DWORD *)(v3 + 148);
    *(_DWORD *)(v31 + 12 + v39) = v38;
    *(_DWORD *)(v31 + 16 + v39) = 0;
    v40 = i3ResourceFile__GetObjectPersistID(v3, v3, v33);
    v41 = *(_DWORD *)(v3 + 148);
    *(_DWORD *)(v31 + 4 + v41) = v40;
    *(_DWORD *)(v31 + 8 + v41) = 0;
    if ( !(*(_BYTE *)(v33 + 16) & 1) )
      break;
    if ( *(_BYTE *)(v3 + 356) )
    {
      v42 = (int)i3ResourceObject__s_pClassMetai3ResourceObject;
      v43 = (**(int (__thiscall ***)(_DWORD))v33)(v33);
      if ( !i3ClassMeta__IsTypeOf(v43, v42) )
      {
        i3Error__SetEnv(0, 1038, (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)", 0);
        i3Error__Log("Asserted : %s", "pObj->IsTypeOf( i3ResourceObject::GetClassMeta())");
      }
      if ( i3ResourceFile___SaveExtern((void *)v3, v53, v33) == -1 )
      {
        i3Error__SetEnv(
          (int)"..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp",
          1042,
          (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)",
          2);
        i3Error__Log(&byte_100656E8);
      }
      *(_DWORD *)(v3 + 56) = a2;
    }
    v44 = 0;
LABEL_53:
    v45 = *(_DWORD *)(v3 + 148);
    v52 += v44;
    *(_DWORD *)(v31 + 20 + v45) = v44;
    *(_DWORD *)(v31 + 24 + v45) = 0;
    (*(void (__thiscall **)(int))(*(_DWORD *)a2 + 48))(a2);
    v31 += 28;
    v47 = __SETO__(v53 + 1, *(_DWORD *)(v3 + 80));
    v46 = v53++ + 1 - *(_DWORD *)(v3 + 80) < 0;
    if ( !(v46 ^ v47) )
    {
      v20 = v58;
      goto LABEL_55;
    }
    v28 = v53;
  }
  v44 = (*(int (__thiscall **)(int, int))(*(_DWORD *)v33 + 20))(v33, v3);
  if ( v44 != -1 )
    goto LABEL_53;
  i3Error__SetEnv(
    (int)"..\\..\\..\\src\\i3Base\\i3ResourceFile.cpp",
    1055,
    (int)"unsigned int __thiscall i3ResourceFile::Save(class i3Stream *)",
    2);
  i3Error__Log("Could not write %s class object.", *(_DWORD *)(v57 + 12));
LABEL_22:
  v52 = -1;
LABEL_23:
  v15 = *(_DWORD *)(v3 + 344);
  if ( v15 )
  {
    if ( v55 )
      *(_DWORD *)(v15 + 16) |= 1u;
    else
      *(_DWORD *)(v15 + 16) &= 0xFFFFFFFEu;
  }
  v49 = *(void **)(v3 + 148);
  if ( v49 )
  {
    i3mem__Free(v49);
    *(_DWORD *)(v3 + 148) = 0;
  }
  return __security_check_cookie((unsigned int)&v52 ^ v63);
}
Добавлено через 1 час 44 минуты
Так же, видимо без zlib.dll и zlib1.dll файлы не открыть.
Только вот я что то не найду не одного упоминания про Zip в i3pack.
Может кто то вкурсе что за TRN3 ? или это что то всетаки корейское от движка?

Последний раз редактировалось Felixx3452; 25.03.2012 в 15:38. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 25.03.2012, 18:48   #2
Заблокирован
 Старший сержант
Аватар для BLACK_DEAD
 
BLACK_DEAD излучает ауруBLACK_DEAD излучает ауруBLACK_DEAD излучает ауруBLACK_DEAD излучает ауруBLACK_DEAD излучает ауруBLACK_DEAD излучает ауру
Регистрация: 09.03.2012
Сообщений: 172
Популярность: 607
Сказал(а) спасибо: 368
Поблагодарили 112 раз(а) в 67 сообщениях
 
По умолчанию Re: i3BaseDx.dll : i3ResourceFile__Save

WFhacks, да все поймут, просто ты восхвальяиш их
я не понимаю смысл проги?
  Ответить с цитированием
Старый 25.03.2012, 22:12   #3
 Разведчик
Аватар для Felixx3452
 
Felixx3452 скоро будет известенFelixx3452 скоро будет известенFelixx3452 скоро будет известенFelixx3452 скоро будет известен
Регистрация: 18.11.2011
Сообщений: 2
Популярность: 310
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: i3BaseDx.dll : i3ResourceFile__Save

Смысл проги в том, чтобы изменять в клинте что угодно, будь то музыка, текстура, или настройки магазинов, оружий... без разницы...
У каждого свои конечно мативы, мне вот например это пригодится когда запущу сервак ПБ.
Может кто то ешо запустит, и 100% придется что то под себя настраивать, так вить)?
А может каму то просто поколупать клиент и посмотреть что там есть...
По одному это все писаться будет долго, конечно напишется, но долго, а все кому оно надо возмуться за это, будет быстро
  Ответить с цитированием
Пользователь сказал cпасибо:
[FC]ZENIT (25.03.2012)
Старый 25.03.2012, 22:42   #4
Заблокирован
 Сержант
Аватар для [FC]ZENIT
 
[FC]ZENIT скоро будет известен[FC]ZENIT скоро будет известен[FC]ZENIT скоро будет известен
Регистрация: 07.04.2010
Сообщений: 128
Популярность: 272
Сказал(а) спасибо: 233
Поблагодарили 279 раз(а) в 192 сообщениях
 
По умолчанию Re: i3BaseDx.dll : i3ResourceFile__Save

Цитата:
Сообщение от Felixx3452Посмотреть сообщение
Смысл проги в том, чтобы изменять в клинте что угодно, будь то музыка, текстура, или настройки магазинов, оружий... без разницы...
У каждого свои конечно мативы, мне вот например это пригодится когда запущу сервак ПБ.
Может кто то ешо запустит, и 100% придется что то под себя настраивать, так вить)?
А может каму то просто поколупать клиент и посмотреть что там есть...
По одному это все писаться будет долго, конечно напишется, но долго, а все кому оно надо возмуться за это, будет быстро

Удачи тогда!
  Ответить с цитированием
Старый 15.04.2012, 02:47   #5
 Разведчик
Аватар для Felixx3452
 
Felixx3452 скоро будет известенFelixx3452 скоро будет известенFelixx3452 скоро будет известенFelixx3452 скоро будет известен
Регистрация: 18.11.2011
Сообщений: 2
Популярность: 310
Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 2 сообщениях
 
По умолчанию Re: i3BaseDx.dll : i3ResourceFile__Save

Очень жаль, что никому не интересно.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 22:00.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net