 |
i3BaseDx.dll : i3ResourceFile__Save - Общение разработчиков - Программирование для Point Blank, общение и обсуждение разработок |
25.03.2012, 13:53
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 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
|
|
|
|
Старший сержант
|
 Регистрация: 09.03.2012
 Сообщений: 172
 Популярность: 607
 Сказал(а) спасибо: 368
Поблагодарили 112 раз(а) в 67 сообщениях
|
Re: i3BaseDx.dll : i3ResourceFile__Save
WFhacks, да все поймут, просто ты восхвальяиш их
я не понимаю смысл проги?
|
|
|
25.03.2012, 22:12
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 18.11.2011
 Сообщений: 2
 Популярность: 310
 Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 2 сообщениях
|
Re: i3BaseDx.dll : i3ResourceFile__Save
Смысл проги в том, чтобы изменять в клинте что угодно, будь то музыка, текстура, или настройки магазинов, оружий... без разницы...
У каждого свои конечно мативы, мне вот например это пригодится когда запущу сервак ПБ.
Может кто то ешо запустит, и 100% придется что то под себя настраивать, так вить)?
А может каму то просто поколупать клиент и посмотреть что там есть...
По одному это все писаться будет долго, конечно напишется, но долго, а все кому оно надо возмуться за это, будет быстро
|
|
|
Пользователь сказал cпасибо:
|
|
25.03.2012, 22:42
|
#4
|
|
|
|
Сержант
|
 Регистрация: 07.04.2010
 Сообщений: 128
 Популярность: 272
 Сказал(а) спасибо: 233
Поблагодарили 279 раз(а) в 192 сообщениях
|
Re: i3BaseDx.dll : i3ResourceFile__Save
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Смысл проги в том, чтобы изменять в клинте что угодно, будь то музыка, текстура, или настройки магазинов, оружий... без разницы...
У каждого свои конечно мативы, мне вот например это пригодится когда запущу сервак ПБ.
Может кто то ешо запустит, и 100% придется что то под себя настраивать, так вить)?
А может каму то просто поколупать клиент и посмотреть что там есть...
По одному это все писаться будет долго, конечно напишется, но долго, а все кому оно надо возмуться за это, будет быстро
|
|
 |
|
 |
|
Удачи тогда!
|
|
|
15.04.2012, 02:47
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 18.11.2011
 Сообщений: 2
 Популярность: 310
 Сказал(а) спасибо: 0
Поблагодарили 4 раз(а) в 2 сообщениях
|
Re: i3BaseDx.dll : i3ResourceFile__Save
Очень жаль, что никому не интересно.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 22:00.
|
 |