April 19, 2024, 05:00
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 43013 times)
Roxus
Guest
« Reply #30 on: November 20, 2009, 02:20 »

Хм.. странно. Хотя, я использовал библиотеки 2004 года, для преобразования DXT в обычный RGBA. Может с тех пор что-нибудь изменилось. Smiley
Сейчас попробую новую библиотеку.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7973



View Profile WWW
« Reply #31 on: November 20, 2009, 02:28 »

Текстура содержит следующие данные (если смотреть как raw, выдернутый через extract):
  • свойства (настройки)
  • мипмапы

Каждый мипмап:
  • bulk data - текстурные данные (да, я немного ошибся, когда сказал, что непожаты - формат bulk предусматривает сжатие одним из алгоритмов, для PC это в основном LZO); bulk начинается с сигнатуры, совпадающей с сигнатурой пакета; данные могут идти и без сжатия
  • 2 x int - размеры данного mipmap
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #32 on: January 29, 2010, 11:49 »

Привет всем.
Ещё раз хочу сказать огромное спасибо тоарищу Gildor за его труд и софтинки.
На данный момент расматриваю один из звуковых файлов ххх из игры бетман.
После декомпрессии внутри файла ххх хорошо просматривается стандартный звуковой архив расширения FSB.Т.е. после декомпрессии в ххх файле уже достаточно легко заменить данные.
Ну и наверное как и многих сейчас интересует компрессия ххх файла.
Судя по темам в форуме понимаю что для сжатия файлов восновном используется сжатие LZO.
Может не совсем коректно,но думаю что файл сжимается не целиком а отдельными блоками иначе всё было бы легко.
Надеюсь Gildor немного приоткроет занавесу этого безнадёжного дела Grin
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7973



View Profile WWW
« Reply #33 on: January 29, 2010, 12:49 »

Формат пакета (то, что связано с компрессией) разбирался здесь.
В старых играх вроде использовалась ZLIB, в новых - LZO. Для XBox 360 используется LZX, поскольку Microsoft супер-пере-оптимизировала свою библиотеку для работы на XBox, да и компрессия у него получше.
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #34 on: January 29, 2010, 13:20 »

спасибо...встречный вопрос..софт по LZX неподскажете где посмотреть?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7973



View Profile WWW
« Reply #35 on: January 29, 2010, 13:23 »

Я использую эту библиотеку:
http://www.cabextract.org.uk/libmspack
(конкретно - lzxd.c)
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #36 on: January 30, 2010, 22:02 »

вот скриншот 2 одинаковых файлов сжатого и несжатого в хексе.
http://tapochek.net/pictures/ae45293467dc8d3901613c7edfaee1ba.jpg
вот эти файлы http://www.sendspace.com/file/9vh3zj
Понял пока что первые 6 строк это основная бошка файла.
Дальше идёт пакет.Если я правильно понимаю то пакет это определённый блок с данными.
На смещении 60 в сжатом файле первые 4 байта 04000000 это говорит что используется сжатие LZX если стояло бы 02000000 то использовалось LZO
Следующие 4 байта говорят о количестве пакетов..в данном случае 1..на этом пока всё(если ошибаюсь поправте!) Grin

Gildor,научи пожалуйста читать основную бошку и скажи-в начале пакета сколько ещё байтов несут информацию про сжатие?
Я пока нашёл lzopack.exe,програмер обещал посмотреть тот набор библиокет что ты дал и поробовать сделать lzхpack.exe
В итоге хочется научиться читать нужную информацию компрессии и имея lzхpack.exe в ручную снять компрессию и потом сжать и если размер сжатых пакетов будет другое в отличии от оригинальных то прописать нужную информацию о сжатии таким образом чтоб файл не оказался битым.
Gildor,очень надеюсь на твою помощь! Smiley
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7973



View Profile WWW
« Reply #37 on: January 30, 2010, 22:34 »

Скриншот не работает - видимо, нужно региться на tapochek.net чтобы посмотреть.

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

"Научить" читать файлы практически невозможно. Посмотрите вот эту программу
http://forums.epicgames.com/showthread.php?t=597581
она умеет читать пакеты (но вроде только с LZO) и даже что-то оттуда вытаскивать.
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #38 on: January 30, 2010, 22:45 »

ладно...тогда вот такой вопросик Smiley
вот к примеру в сжатом файле 6 пакетов.
каждый пакет будет начинаться с байтов 04000000( проверил хексом)
получается что у каждого пакета будет размер и адрес(офсет)
это где то прописывается?
скажем если после декомпрессии и последующем моей компрессии размеры пакетов будут отличаться от оригинальных как поступать?Если есть информация о размерах и адресах её надо будет  изменить?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7973



View Profile WWW
« Reply #39 on: January 30, 2010, 23:00 »

Забудьте об идее пропатчить запакованный файл. Его можно распаковать и только затем изменить. В лучшем случае - потом по-новой запаковать (сейчас для этого никакой утилиты нет).
После запаковки 99.9% вероятность, что файл будет другого размера. Причем нельзя сказать, будет он меньше или больше - зависит от характера ("энтропии") исходных и модифицированных данных.
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #40 on: January 30, 2010, 23:02 »

вот скриншот http://pixs.ru/showimage/Bezimyanni_9196024_442747.jpg
Так я и пытаюсь понять как сжать файл а не как заменить данные в сжатом виде Smiley
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #41 on: January 30, 2010, 23:08 »

Gildor, и ты так и неответил-сколько байтов в начале первого пакета несут информацию о сжатии?
Просто на взгляд у последущих пакетов начало 04000000 и потом идёт,как бы лучше сказать" такая плотная информация Grin а у первого в начале много нулевых байтов...т.е. в начале указывается метод сжатия,потом число пакетов а потом?
Пожалуйста поделись знаниями Wink
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7973



View Profile WWW
« Reply #42 on: January 30, 2010, 23:34 »

http://erictheturtle.blogspot.com/2009/01/dissecting-mirrors-edge.html
берёте UE3PackageViewer, там в архиве есть исходники. Чтение пакета - UPackage.cs.

Кстати, и автор этой тулзы, а хозяин того сайта - оба есть на этом форуме Smiley
Logged
platov01
Sponsor
Newbie
*
Posts: 22


View Profile
« Reply #43 on: February 03, 2010, 22:34 »

А не исключена такая возможность что ядро игры где используются ххх файлы понимает только сжатый ххх файл? или это маловероятно?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7973



View Profile WWW
« Reply #44 on: February 03, 2010, 23:00 »

Если только программисты специально запретили загрузку несжатых файлов Smiley
Люди уже несколько игр локализовали с помощью decompress.exe - распаковали, пропатчили и положили обратно (без упаковки).

Вы можете даже пережать xbox-xxx по LZO (а не LZX) - движок всё равно загрузит.
Только PC-версия движка не загрузит сжатые по LZX файлы, остальное всё со всем совместимо (в пределах совместимых версий движка)
Logged
Print 
« previous next »
Jump to:  

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