Перейти к содержимому


Внимание!

Это форум по извлечению ресурсов из игр: музыки, звуков, текстур, 3D-моделей...
Перед поиском ответов на форуме, рекомендуется ознакомиться с основным сайтом EXTRACTOR.ru!
[ Прочтите внимательно - правила создания тем и ответа в них ]
Все вопросы по запуску игр задавайте в другом месте: Установка и запуск игр.


Resident Evil 3


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 52

#21 angel_death

angel_death

    Сержант

  • Пользователи
  • 24 сообщений

Отправлено 10 October 2005 - 09:11

http://angel-death.n...l.ru/re3lib.rar

библиотека для паков Resident Evil 3

распаковка строчки индикатора сжатия:
int size = *(int*)(data+4);

for ( int j = 0 ; j < 8 ; j++ )
{
type[j] = data[8+j]^(size%0x14);
}
int num = *(WORD*)(data+2);
DWORD *keys = (DWORD*)(data+0x10);
int *sizes = (int*)(data+0x10+num*4);

ключи для расшифровки блоков также являются crc этих блоков после расшифровки
reserved в Decrypt должен быть равен 0
base в crc32 = -1


#22 -=CHE@TER=-

-=CHE@TER=-

    Полковник

  • Администраторы
  • 971 сообщений
  • Пол:Мужчина

Отправлено 18 November 2005 - 22:32

angel_death!
Респект тебе - ты разобрался с таким хитроумным алгоритмом!.. А можно всё-таки чуть-чуть по-подробнее объяснить, что к чему? Что-то я с ним застрял, честно говоря...
Вот:
Код
#include <stdio.h>
#include <stdlib.h>
#include "re3lib.h"

int main(int argc, char *argv[]){
unsigned char *buff;
unsigned char *bout;
int size = 0;
unsigned int tf, i, foffs, fsz, fp;
FILE *fl, *f;
char *st, b, ln;
unsigned int w;
 if(argc != 2){
   printf("Usage: re3unp filename.dat");
   return(1);
 }
 fl = fopen(argv[1], "rb");
 fseek(fl, 0x1000, SEEK_SET);
 fread(&tf, 4, 1, fl);
 for(i = 1; i<tf; i++){
   fread(&foffs, 4, 1, fl); /* offs*8 */
   foffs = foffs*8;
   fread(&fsz, 4, 1, fl); /* size --- ??? */
   fp = ftell(fl);
   ln = 0;
   do{
     fread(&b, 1, 1, fl);
     ln++;
   }while(b);
   st = (char *)malloc(ln);
   fseek(fl, fp, SEEK_SET);
   fread(st, ln, 1, fl);
   printf("%s\n", st);
   fp = ftell(fl);
   fseek(fl, foffs, SEEK_SET);
   w = 0;
   fread(&w, 2, 1, fl); /* What is that?.. Structure size? */
   fsz = fsz - w; /* but some size is zero... damaged of pirates archive?! */
   fseek(fl, ftell(fl)+2, SEEK_SET); /* skip 2 bytes */
   fread(&fsz, 4, 1, fl); /* real filesize! */
   fseek(fl, foffs+w, SEEK_SET);
   f = fopen(st, "wb+");
   free(st);
   buff = (unsigned char *)malloc(fsz);
   bout = (unsigned char *)malloc(fsz);
   fread(buff, fsz, 1, fl);
/*  следующие три строчки закомментарил, так как ума не приложу что с нимим
   делать и в каком порядке запускать - либо не расшифровывается,
   либо вылетает с ошибкой */
/*    Decrypt(buff, crc32(-1, buff, fsz), 0, fsz);
   Unpack(buff, bout, fsz);*/
   fwrite(bout, fsz, 1, f);
   free(bout);
   free(buff);
   fclose(f);
   fseek(fl, fp, SEEK_SET);
 }
 fclose(fl);
 return(0);
}


И ещё я не понял вот это:
Цитата
распаковка строчки индикатора сжатия:
int size = *(int*)(data+4);

for ( int j = 0 ; j < 8 ; j++ )
{
type[j] = data[8+j]^(size%0x14);
}
int num = *(WORD*)(data+2);
DWORD *keys = (DWORD*)(data+0x10);
int *sizes = (int*)(data+0x10+num*4);

Какого индикатора?..

CrOm!
Может ты разобрался? Что-то я тупень полный. (*улыбается*)

#23 angel_death

angel_death

    Сержант

  • Пользователи
  • 24 сообщений

Отправлено 19 November 2005 - 01:32

то что ты считываешь из архива имеет более сложную структуру
и ее надо предварительно разбирать прежде чем скармливать функциям Decrypt и Unpack
каждый файл в архиве состоит из нескольких кусочков
Unpack рапаковывает имеено эти кусочки, а не файл целиком
индикатор упаковки находится в байтах 8-16
crc для расшифровки считатается от уже расшифрованного и возможно распакованного кусочка(точно уже не помню). для распаковки архива считать его не обязательно, ппосколько он хранится в заголовке того блока который хранится в архиве



#24 Sash

Sash

    Старшина

  • Пользователи
  • 91 сообщений

Отправлено 19 November 2005 - 11:47

Такой вопрос: Decrypt и Unpack - это чьи функции, из какого набора?

#25 angel_death

angel_death

    Сержант

  • Пользователи
  • 24 сообщений

Отправлено 19 November 2005 - 12:31

что ты называешь набором?

#26 Sash

Sash

    Старшина

  • Пользователи
  • 91 сообщений

Отправлено 19 November 2005 - 16:02

А-ля zlib и пр.
Просто у меня не получается подключить re3lib.obj

#27 CrOm

CrOm

    Старший сержант

  • Пользователи
  • 76 сообщений
  • Город:Omsk

Отправлено 19 November 2005 - 17:40

Цитата (-=CHE@TER=- @ 19.11.2005 - 02:32)
CrOm!
Может ты разобрался? Что-то я тупень полный. (*улыбается*)

мне некогда щас. работать над Mr.Ripperom, поэтому еще не смотрел. на недельке гляну...

#28 -=CHE@TER=-

-=CHE@TER=-

    Полковник

  • Администраторы
  • 971 сообщений
  • Пол:Мужчина

Отправлено 19 November 2005 - 19:45

angel_death!
Спасибо, попробую повозиться и доложу о результатах. (*улыбается*)

Sash!
А ты под что пишешь? Под VS 6.0 всё прекрасно подключается.

#29 angel_death

angel_death

    Сержант

  • Пользователи
  • 24 сообщений

Отправлено 20 November 2005 - 01:27

Цитата

Sash!
А-ля zlib и пр.

это называется библиотека, которые в свою очередь состят из obj файлов
функции Decrypt и Unpack находятся в re3lib.obj

#30 Sash

Sash

    Старшина

  • Пользователи
  • 91 сообщений

Отправлено 20 November 2005 - 08:48

Пишу в VSNET
У меня не подключается, выдаёт ошибку. что не может конвертнуть куда-то

#31 angel_death

angel_death

    Сержант

  • Пользователи
  • 24 сообщений

Отправлено 20 November 2005 - 09:16

в VSNET к native приложениям тоже нормально подключается
к .NET приложениям тоже по идее должна быть возможность подключать native библиотеки

#32 Sash

Sash

    Старшина

  • Пользователи
  • 91 сообщений

Отправлено 25 November 2005 - 18:53

Наконец конвертнул obj, всё скомпилилось
Но позвольте вопрос: нафига нужен Unpack?
У меня достаточно одного Decrypt, чтобы всё извлекалось в нужном виде

#33 Sash

Sash

    Старшина

  • Пользователи
  • 91 сообщений

Отправлено 25 November 2005 - 18:54

ЗЫ + вопрос к angel_death как тебя указать в комментах к моему плагину (нашему smile.gif ) ????

#34 angel_death

angel_death

    Сержант

  • Пользователи
  • 24 сообщений

Отправлено 25 November 2005 - 19:03

так и указывай angel_death
а то что тебе не требовался Unpack, возможно связано с тем что у тебя перепакованная версия, в которой сжатие не используется.
В оригинальной оно не используется только для мелких и плохо сжимаемых файлов

#35 Serg_R

Serg_R

    Старший сержант

  • Пользователи
  • 43 сообщений

Отправлено 30 January 2006 - 15:57

Я Вот чего не могу понять...
Как файлы обратно то запаковывать? млин уже часа 2 убил... наверное все гениальное просто... но млин - подскажите...

#36 Serg_R

Serg_R

    Старший сержант

  • Пользователи
  • 43 сообщений

Отправлено 31 January 2006 - 07:53

разобрался... )

#37 denbad

denbad

    Ефрейтор

  • Пользователи
  • 5 сообщений

Отправлено 12 March 2006 - 20:11

Цитата (Serg_R @ 31.01.2006 - 11:53)
разобрался... )

а если не секрет то как именно ? я тож как бы разобрался как перезапаковывать, но тока, как уже говорилось раньше новый ДАТ не пашет и игра падает sad.gif

#38 Flag

Flag

    Рядовой

  • Пользователи
  • 1 сообщений

Отправлено 26 February 2008 - 15:06

Hey!

Some news from the "repacking" to this tool?
I try yet... try... try... But nothing work. : (


Flag

#39 @ndrei

@ndrei

    Младший сержант

  • Пользователи
  • 11 сообщений

Отправлено 19 May 2009 - 11:58

А где скачать то Resident Evil 3 Insert/Extract Tool Crash. Не нашел ссылки.
Помогите пож-та.

#40 -=CHE@TER=-

-=CHE@TER=-

    Полковник

  • Администраторы
  • 971 сообщений
  • Пол:Мужчина

Отправлено 19 May 2009 - 15:17

@ndrei!
Crash - это её автор, а саму утилиту можно взять на сайте.