#1
Отправлено 02 February 2011 - 11:00
#2
Отправлено 02 February 2011 - 13:53
#3
Отправлено 13 February 2011 - 00:20
и кстати у автора quickbms на сайте кривой скрипт для блюра - он толи для х-боксовой версии игры его писал, толи для демки, но не все файлы распаковывались им корректно.Попытался QuickBMS расспаковать архивы игры Blur, формат архивов "pak", и других игр с таким названием не встречал, так что думаю, срипт для этой игры... Но архивы не расспаковываются, QuickBMS выдает ошибку ... С другими скриптами проблем никогда не было... Может кто-нибудь подсказать, в чем может быть проблема, и можно ли ее устранить???
помню я тот скрипт довольно сильно правил, чтоб всё извлекалось правильно. если надо - могу поискать свою версию.
#4
Отправлено 26 September 2013 - 01:00
Собственно, с этим я уже справился - почти весь формат можно понять и описать просто глядя на него через хекс-редактор, без использования дизасма/дебаггера.
Сложность заключается в том, что разные файлы в архиве сжаты по-разному
Есть несжатые, которые можно дампить "как есть", есть пожатые злибом и есть пожатые злибом и зашифрованные сверху IDEA.
Ключ я благополучно рипнул и вычислил, но осталась одна проблема.
По стандарту шифрования IDEA, входной и выходной поток данных должен быть в 16битном big-endian, а тут применялась реализация, работающая с little-endian. QuickBMS же использует стандартные реализации, которые благополучно разворачивают байтовый порядок на входе и выходе, от чего, соответственно, результат расшифровки можно сразу отправлять в корзину.
Есть ли способ заставить QuickBMS не делать этого?
Команды типа endian big/little не оказывают никакого эффекта
Я пытался написать цикл, который разворачивает данные перед расшифровкой, но расшифровка происходит только при сохранении в файл, поэтому развернуть уже расшифрованные данные обратно не получается. А ведь их еще и разжимать нужно!
Может, посоветуете что-нибудь?
ЗЫ. Да, я понимаю, в таком случае, наверное, будет лучше написать отдельный экстрактор, и для меня это не такая большая проблема. Просто это первый раз, когда я использую QuickBMS, и мне хотелось бы решить вопрос именно с помощью скрипта.
Скачать с iFolder.com
в архиве по ссылке:
unpack.bms - скрипт для распаковки wad файлов. зашифрованные просто дампит как есть
test.bms - моя попытка написать скрипт для расшифровки. на выходе получается злиб поток, перевернутый по два байта
main.lua - зашифрованный файл для проверки
#5
Отправлено 26 September 2013 - 12:30
Можно перед последней строкой скрипта в "test.bms" добавить вот это:
# decrypt buffer log MEMORY_FILE2 0 EOF MEMORY_FILE # turn off encryption encryption "" "" # reverse words for I = 0 <= FILE_END get LE_WORD short MEMORY_FILE2 reverseshort LE_WORD put LE_WORD short MEMORY_FILE next I
#6
Отправлено 26 September 2013 - 22:35
Эх, а я ведь пробовал такой вариант...
Только шифрование отключить не получалось - я использовал команду encryption только с одним пустым параметром
(как указано в документации в примере использования команды FileCrypt), и получал ошибку.
-=CHE@TER=-, большое спасибо!
#7
Отправлено 27 September 2013 - 13:51
Если присмотреться к объявлению этой функции в "quickbms.txt", то видно, что там обязательные параметры (не взятые в квадратные скобки) - это первые два:
Encryption ALGO KEY [IVEC] [MODE] [KEYLEN]
Это небольшая ошибка в документации - я написал письмо автору и попросил поправить.