Resident Evil 3
#21
Отправлено 10 October 2005 - 09:11
библиотека для паков 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
Отправлено 18 November 2005 - 22:32
Респект тебе - ты разобрался с таким хитроумным алгоритмом!.. А можно всё-таки чуть-чуть по-подробнее объяснить, что к чему? Что-то я с ним застрял, честно говоря...
Вот:
Код |
#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
Отправлено 19 November 2005 - 01:32
и ее надо предварительно разбирать прежде чем скармливать функциям Decrypt и Unpack
каждый файл в архиве состоит из нескольких кусочков
Unpack рапаковывает имеено эти кусочки, а не файл целиком
индикатор упаковки находится в байтах 8-16
crc для расшифровки считатается от уже расшифрованного и возможно распакованного кусочка(точно уже не помню). для распаковки архива считать его не обязательно, ппосколько он хранится в заголовке того блока который хранится в архиве
#24
Отправлено 19 November 2005 - 11:47
#25
Отправлено 19 November 2005 - 12:31
#26
Отправлено 19 November 2005 - 16:02
Просто у меня не получается подключить re3lib.obj
#27
Отправлено 19 November 2005 - 17:40
Цитата (-=CHE@TER=- @ 19.11.2005 - 02:32) |
CrOm! Может ты разобрался? Что-то я тупень полный. (*улыбается*) |
мне некогда щас. работать над Mr.Ripperom, поэтому еще не смотрел. на недельке гляну...
#28
Отправлено 19 November 2005 - 19:45
Спасибо, попробую повозиться и доложу о результатах. (*улыбается*)
Sash!
А ты под что пишешь? Под VS 6.0 всё прекрасно подключается.
#29
Отправлено 20 November 2005 - 01:27
Цитата |
Sash! А-ля zlib и пр. |
это называется библиотека, которые в свою очередь состят из obj файлов
функции Decrypt и Unpack находятся в re3lib.obj
#30
Отправлено 20 November 2005 - 08:48
У меня не подключается, выдаёт ошибку. что не может конвертнуть куда-то
#31
Отправлено 20 November 2005 - 09:16
к .NET приложениям тоже по идее должна быть возможность подключать native библиотеки
#32
Отправлено 25 November 2005 - 18:53
Но позвольте вопрос: нафига нужен Unpack?
У меня достаточно одного Decrypt, чтобы всё извлекалось в нужном виде
#33
Отправлено 25 November 2005 - 18:54
#34
Отправлено 25 November 2005 - 19:03
а то что тебе не требовался Unpack, возможно связано с тем что у тебя перепакованная версия, в которой сжатие не используется.
В оригинальной оно не используется только для мелких и плохо сжимаемых файлов
#35
Отправлено 30 January 2006 - 15:57
Как файлы обратно то запаковывать? млин уже часа 2 убил... наверное все гениальное просто... но млин - подскажите...
#36
Отправлено 31 January 2006 - 07:53
#37
Отправлено 12 March 2006 - 20:11
Цитата (Serg_R @ 31.01.2006 - 11:53) |
разобрался... ) |
а если не секрет то как именно ? я тож как бы разобрался как перезапаковывать, но тока, как уже говорилось раньше новый ДАТ не пашет и игра падает
#38
Отправлено 26 February 2008 - 15:06
Some news from the "repacking" to this tool?
I try yet... try... try... But nothing work. : (
Flag
#39
Отправлено 19 May 2009 - 11:58
Помогите пож-та.