March 28, 2024, 14:20
bigger smaller reset     1020px Wide width Full width Reset   * *

Gildor's Forums

  Homepage Facebook Read news on Twitter Youtube channel Github page
Welcome, Guest. Please login or register.
Did you miss your activation email?

« previous next »
Print
Author Topic: пакер.ххх файлов можно ли cделать??  (Read 42913 times)
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #45 on: February 05, 2010, 13:31 »

Gildor,вот с таким вопросиком.
Предполоим я распаковал несжатый архив ххх своим методом
Получилась в начале бошка файла потом определённые блоки.
Если распаковать твоим экстратором они будут на зываться
файлами с расширением SoundNodeWave
В этих блоках в начале есть текстура(видимо субтитры к данному звуковому файлу)
потом следует сам звуковой файл.
Предположим я заменяю в этих блоках звуковые файлы на файлы меньшего размера.
Теперь я собираю архив ххх использую оригинальную бошку.
Как я должен правильно собирать файл? Блоки SoundNodeWave должны будут следовать друг за другом или нужно их поставить на прежние места,на теже смещения и между блоками получатся нулевые байты.
Иными словами в бошке прописывается размеры и адреса состовляющих SoundNodeWave файлов или нет?
« Last Edit: February 05, 2010, 13:38 by platov01 » Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #46 on: February 05, 2010, 16:00 »

Если распаковать твоим экстратором они будут на зываться
файлами с расширением SoundNodeWave
В этих блоках в начале есть текстура(видимо субтитры к данному звуковому файлу)
Никакой текстуры там нет. Узнять что лежит в SoundNodeWave можно посмотрев исходники скриптов (от UT3 или UDK) - файл Engine/Classes/SoundNodeWave.uc

Quote
Предположим я заменяю в этих блоках звуковые файлы на файлы меньшего размера.
Теперь я собираю архив ххх использую оригинальную бошку.
Собрать нечем. Можно пропатчить оригинальный (распакованный) файл.

Quote
Как я должен правильно собирать файл? Блоки SoundNodeWave должны будут следовать друг за другом или нужно их поставить на прежние места,на теже смещения и между блоками получатся нулевые байты.
Иными словами в бошке прописывается размеры и адреса состовляющих SoundNodeWave файлов или нет?
Смещение и размеры объекта прописаны в таблице экспорта пакета. Если захотеть положить объект в другое место и с другим размером - надо править эту таблицу.
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #47 on: February 05, 2010, 16:31 »

В нех-е в файлах SoundNodeWave в начале идёт информация связанная с текстом,это 100% субтитры,потом звуковой файл который в данном случае начинается как и wav файл со слов RIFF
Собрать и разобрать архив я делаю своими софтинками
Разборка идёт по заданному критерию(в данном случае определённый набор байтов с которого начинается каждый SoundNodeWave в каждом конкретном файле.
При разборе прога прописывает в имя блока его номер и смещение(адрес).
Другая софтинка упаковывает эти блоки обратно в архив по данным смещениям.

Таблица экспорта..вот о чём я тебя спрашивал.
Спасибо ещё раз. Wink
Значит вней и размеры и адреса...буду изучать Smiley
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #48 on: February 05, 2010, 16:44 »

Для хранения звуков UE3 использует специальный тип блока - bulk (в скриптах помечено как "UntypedBulkData_Mirror"). Эта структура содержит абсолютную позицию данных в файле. Именно она мешает пересобрать пакет так, чтобы данные находились по другим позициям. Она используется в SoundNodeWave и в текстурах, не говоря уж о данных, не имеющих отображения (mirror) в скрипте.

Если повнимательнее посмотреть на SoundNodeWave, там есть ещё
Code:
/** Offsets into the bulk data for the source wav data */
var    const array<int> ChannelOffsets;
/** Sizes of the bulk data for the source wav data */
var    const array<int> ChannelSizes;
т.е. если bulk пересобрать самому, эти смещения могут "съехать".
А наверняка есть ещё и другие вещи, про которые в скриптах не написано.

В общем, не всё так просто ...
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #49 on: February 05, 2010, 18:02 »

Спасибо.
На данном этапе я просто заменю в файлах SoundNodeWave только тело звукового файла хма
которое ограничено начальной служебной информацией начинающейся на RIFF и заканчивающейся на data +4 байта и конечной информацией начинающейся на seek

Просто хотел узнать наперёд если можно заменить в файле SoundNodeWave хма файл вместе со служебной информацией на меньший размер,а это можно сделать заменив частоту скажем с 44100 на 22050 ,это не музыка,почти незаметно будет,то тогда теоритически можно собрать архив который в несжатом виде будет меньше сжатого оригинального,ну по крайне мере не больше.

http://pixs.ru/showimage/1jpg_3043075_450780.jpg
вот начало одного из файлов SoundNodeWave
а вот начало звукового файла хма в этом SoundNodeWave
http://pixs.ru/showimage/2jpg_5594723_450782.jpg

в даннных SoundNodeWave файлах не то чтоб они начинаются на байты
0000000000000026000000000000002E
а вся информация в начале по смещение 60 осатётся неизменная.
Не сможешь поконкретней указать(указать смещение в первом скриншоте) где можнт прописываться
смещение и размер?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #50 on: February 05, 2010, 18:07 »

Это всё сериализуется как "свойства" (property). Эта информация (как и всё в UE3) имеет "плавающий" формат - позиция зависит от предыдущих свойств, их размеров и т.д.
В HexEditor-е такое увидеть невозможно.
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #51 on: February 05, 2010, 18:19 »

Понятно,вообщем не стоит заморачиваться.
Просто когда изучал звуковые архивы FSB то там чёткая последовательность- в определённом месте прописывается размер бошки,дальше количество файлов(вся информация в каждых 4 байтах)
потом описывались файлы..размер,частота,число каналов и т.д.
По этой информации легко можно было раскидать файл на бошку и составляющие файлы а потом собрать.Если файлы новые были другого размера то тогда нужно было поменять эту инфу в бошке.

С файлами ххх я понял по твоим словам вся эта информация динамическая,но твой распаковщик всегда её читает?! Блин..или я во что то не вьезжаю Grin
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #52 on: February 05, 2010, 19:15 »

http://pixs.ru/showimage/3jpg_8388920_450889.jpg
это скриншот начал одновременно 2 файлов SoundNodeWave в нех-е
размер первого файла(слево) SoundNodeWave 3DC1 размер его хма файла 3075
размер второго файла 35A1 размер хма в нём 2870
со смещения 137 видно что начинается какой то текст,дальше расматривать нечего
смещение первого SoundNodeWave файла относительно начала архива ххх 1320
Визуально не нашёл информации связанной с этими данными в началах SoundNodeWave файлах.
Возможно что информация о размерах и смещениях SoundNodeWave файлов находится только в таблице экспорта? Или она действительно есть в начале каждого SoundNodeWave файла и я её просто не вижу? Sad
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #53 on: February 05, 2010, 20:43 »

Gildor,мне кажется замучил я тебя своими вопросами Grin
Если есть ещё нервы и тепрение может подскажешь ещё немного Smiley
Вот нашёл таблицу экспорта в самом файле
Понял что описалово пакета начинается с флага FFFFFF и ещё байт
http://pixs.ru/showimage/1jpg_5574327_450970.jpg
окончания FD или FB характерны для файлов SoundNodeWave
Если в ххх архиве только SoundNodeWave файлы окончание FD если используются ещё файлы FSB RFMODSound то оконцовка флага FB а у FSB архива FD
обязательно после флага через 20 байтов должен быть флаг 000F0104 для SoundNodeWave и 000F0004 для FSB RFMODSound
http://pixs.ru/showimage/2jpg_3080082_450985.jpg
Дальше через 28 байт от первого флага стоит размер
http://pixs.ru/showimage/3jpg_5194066_450989.jpg
Следующие 4 байта это смещение от начала архива ххх
http://pixs.ru/showimage/4jpg_8756937_450991.jpg

Gildor,если я в чём то ошибаюсь или ещё что то не увидел подскажи пожалуйста Wink
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #54 on: February 05, 2010, 21:33 »

Никаких "характерных байтов" в Unreal нет.
Единственный "ключ" - C1832A9E - идентификатор пакета. Используется также в сжатых блоках.
Больше - ничего.
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #55 on: February 05, 2010, 23:26 »

я просто не правильно написал..не пакетов а содержимых пакета
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #56 on: February 05, 2010, 23:46 »

Попробовал пересобрать вручную нех-ом небольшой ххх файл состоящий из 5 SoundNodeWave
с заменой в них хма файлов и исправить данные в таблице.
При распаковке экстратором вроде всё ок,без косяков...осталось проверить на практике Smiley
« Last Edit: February 05, 2010, 23:52 by platov01 » Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #57 on: February 09, 2010, 09:49 »

Возник вот такой вопрос.
После сняти компрессии в конце файлов появляется строчка из 16 байт(иногда строчки)
почти вся строчка из нулей,а в конце указано конечное смещение архива
http://pixs.ru/showimage/Bezimyanni_1966150_455509.jpg

Это относится к структуре этих файлов или это своеобразный "след" который оставляют декомпрессор и экстратор и эти строчки нужно удалить перед заменой файлов в образ?
Просто если это след,то последний файл в архиве может глючить из за этого.

И забыл сказать самое главное.
Попробовал сегодня подставить в игру ххх не сжатый файл.Ядро игры схавала его.

Gildor,снимаю шляпу.....ещё раз огромное спасибо! Smiley
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #58 on: February 09, 2010, 10:36 »

Это относится к структуре этих файлов или это своеобразный "след" который оставляют декомпрессор и экстратор и эти строчки нужно удалить перед заменой файлов в образ?
decompress "следов" не оставляет.
Quote
Попробовал сегодня подставить в игру ххх не сжатый файл.Ядро игры схавала его.
Я рад Smiley
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #59 on: February 09, 2010, 11:55 »

Спасиюо за инфу.
Значит если пересобрать архив мало того чтоб изменить данные о размерах и смещениях новых состовляющих...нужно в конце архива ещё дописывать эту строчку Smiley
Logged
Print 
« previous next »
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS