PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   [FAQ] GZIP-сжатие модулей с помощью консоли 7z.exe (https://www.pspx.ru/forum/showthread.php?t=102945)

lupus 02.02.2013 17:15

У меня с б0льшим сжатием, чем дефолтное игра не захотела запускаться :(

ErikPshat 02.02.2013 18:11

Цитата:

Сообщение от lupus (Сообщение 1063315)
У меня с б0льшим сжатием, чем дефолтное игра не захотела запускаться :(

Где-то значит допустил ошибку.

Уж поверь мне, уровень сжатия никак не влияет на запускаемость.
Уже сотни раз пережимал файлы, бывало по максимуму, ни разу такого не было, чтобы что-то не запускалось.
Не запустится может только при не правильной упаковке, проставления размеров.

ErikPshat 23.02.2013 13:01

lupus, как я говорил, уже сотни раз сжимал со всевозможными параметрами сжатия всякие VSH, Recovery и что только ни жал, ни разу такого не было, чтобы GZ вдруг становился не рабочим. Такого никаким образом быть не может. Я просто не пойму, что у тебя, что у lis5131, постоянно что-то не работает, а Лис ваще жал через Гуи 7-Zip, потом нашёл какой-то доисторический BZIP компрессор ))) и вдруг что-то получилось :D

Вот сегодня опять сжал ваще с неимоверными параметрами в GZIP и даже заснял видео :)

lupus 02.03.2013 10:38

Я жал не модули, а игровые архивы, в которых тоже используется gz

LaKosta 02.03.2013 18:51

lupus, а какая разница. Чем отличается GZIP от GZIP?
Тут просто более сильное сжатие - будет дольше расжиматься. Все эти параметры сжатия используются только в процессе сжатия, а при распаковке только распаковывается.

Это аналогично, когда кодируешь видео в 1 проход или 2 прохода и с фильтрами. Чем больше проходов и доппараметров, тем дольше будет происходить кодировка. Но вот проигрывать видео по-любому будет проигрыватель, даже не задумываясь о том, сколько проходов было использовано или какие там суперпродвинутые параметры кодирования были использованы.

И это, PROUpdater установщика прошивки сжимать в 3 прохода - это тебе не с игровыми ресурсами баловаться :)
Цитата:

Сообщение от ErikPshat (Сообщение 1064759)
7z a -tgzip PROUpdater.gz "ErikPshat PSPx Team" -mx=5 -mfb=4 -mpass=3


lupus 19.01.2018 14:55

Недавно снова столкнулся с похожей задачей, нужно было найти и извлечь сжатый кусок данных, а если их много, то автоматизировать процесс.
Для этого отлично подошла софтинка offzip:
Ссылка
Цитата:

Offzip 0.4 (offzip / Offset file unzipper) .image.
a very useful tool to unpack the zip (zlib/gzip/deflate) data contained in any type of file like raw files, packets, zip archives, executables and everything else.
it's needed only to specify the offset where the zip data starts or using the useful -S search option able to scan the file for possible deflate (-z -15) and zlib data.
there are also other options for extracting all the compressed streams (-a) or dumping them compressed (-A).
it's also possible to choose a windowBits value for scanning both the zlib (RFC1950) and deflate (RFC1951) blocks.
the -c option allows to work with chunked files and trying to build the original files.
the files will be dumped with a guessed extension that can be useful for their quick identification.
the tool has also a reimport option (-r) like QuickBMS.
how to dump all the zlib compressed files in an archive:
- offzip.exe -a input_archive output_folder 0
how to dump all the deflate compressed files in an archive:
- offzip.exe -z -15 -a input_archive output_folder 0
нам нужна команда
Код:

offzip.exe -z -15 -a input_archive output_folder 0
я использовал такую:
Код:

offzip.exe -z -15 -a orig_tr.nax temp 0 > tr_nax.txt
где:
Код:

orig_tr.nax
- мой файл, в котором я искал сжатые секции
Код:

temp
- папка, в которую извлекать найденные данные
Код:

> tr_nax.txt
- текстовик, куда сохранить лог

На выходе я получил файл 000003ae.lxc в папке temp и лог в текстовом файле tr_nax.txt рядом с offzip.exe

Файл 000003ae.lxc - содержимое того самого gz архива, который я искал. Обращаю внимание, что это уже распакованные данные!
Откуда имя файла:
000003ae - Поскольку заголовок gzip архива в данном конкретном случае не содержал имени сжатого файла, в качестве имени использовался адрес с которого в orig_tr.nax начинался поток сжатых данных.
.lxc - приложение offzip пытается по заголовкам извлечённых данных определить их MIME содержимое, что бывает очень полезно для стандартных типов файлов. Очень удобно, когда на выходе вы получаете всякие .png, .wav и т.п. В данном конкретном случае файл начинается с сигнатуры LXCE, отсюда и расширение.

Если хотите вырезать архив в исходном виде, то:
1. открываем исходный файл orig_tr.nax в хекс редакторе
2. переходим по адресу 0x000003ae т.е. к началу потока сжатых данных
3. с помощью поиска ищем значение hex 1f8b (magic сигнатура gz), направление поиска (обязательно!) назад от текущего положения курсора. Первое же совпадение должно быть началом нашего архива.

NB! Размер заголовка gzip архива может отличаться в зависимости от заданных при сжатии аргументов. Но его минимальная длина всегда равна 0x0A (10 байт)
Более подробно о заголовке (и не только) gzip прочитать здесь: http://www.forensicswiki.org/wiki/Gzip

Упражнение для начинающих
В данном конкретном случае :blush: мой заголовок размером, как раз 10 байт и выглядит так:
Код:

1F 8B 08 00 00 00 00 00 00 0B
Привёл его в качестве примера и для того, чтобы дать начинающим "копателям кода" возможность поупражняться и понять, какие данные хранятся в том заголовке.



Все данные, выше заголовка можно отбросить и сохранить файл, дав ему имя %filename%.gz (самый простой путь, о нём выше говорил Эрик), после чего извлечь данные с помощью того же 7zip.
Если всё сделано верно, то бинарное сравнение подтвердит идентичность данных извлечённых offzip и хекс-редактором.

позже продолжим...

Yoti 01.02.2018 00:20

Вложений: 3
А ещё программа для обработки заголовка gzip (0x1f8b...) от меня.
Использование: кинуть файл на программу или передать 1-ым параметром.

Версия 0.1 (31.01.18): первый релиз
Версия 0.2 (01.02.18): отображение времени из заголовка, добавлено значение 0 для поля сжатия
Версия 0.3 (03.02.18): исправлено отображение времени, когда оно не задано

Yoti 04.05.2019 04:18

Вложений: 2
Однострочные утилиты, которые написаны больше как тренировка для себя.

gzip - упаковщик
Синтаксис:
Код:

gzip.exe <input> [output]
Имя output по умолчанию это input с дополнительным расширением '.gz'.

ungz - распаковщик
Синтаксис:
Код:

ungz.exe <input> [output]
Имя output по умолчанию это input с обнулением последнего расширения.
Например, test.txt.gz -> test.txt; test.gz -> test (без расширения).

ErikPshat 04.05.2019 08:34

Yoti, вообще родная утилита от линукс - это tar.exe, она и в составе Windows 10 включена по умолчанию и пакует в gzip, bzip2.
Набери в консоли tar --help.
Код:

Compression options:

 -a, --auto-compress        use archive suffix to determine the compression program
 -I, --use-compress-program=PROG
                            filter through PROG (must accept -d)
 -j, --bzip2                filter the archive through bzip2
 -J, --xz                  filter the archive through xz
    --lzip                filter the archive through lzip
    --lzma                filter the archive through lzma
    --lzop                filter the archive through xz
    --no-auto-compress    do not use archive suffix to determine the ompression program
 -z, --gzip, --gunzip, --ungzip  filter the archive through gzip
 -Z, --compress, --uncompress  filter the archive through compress


Yoti 05.05.2019 03:32

ErikPshat,
никс подсистема не включена по умолчанию и у меня не десятка. Зато я сделал архивацию без имени файла, как и было в оригинале.


Текущее время: 15:21. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.