Сохранен 34
https://2ch.hk/s/res/3116617.html
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Вскрытие архивов

 Аноним (Microsoft Windows 10: New Opera) 20/02/22 Вск 12:22:42 #1 №3116617 
изображение2022-02-20122235.png
Здравствуй, /s/! Вопрос у меня к анонам нестандартный, поэтому создаю отдельный тред.
Дело в том, что я недавно прошёл одну старую игру под назаванием Refuze:Атака брака. Игра уже давно abandonware, поэтому никакой информации внятной о лицензиях найти мне не удалось даже через Wayback Machine.
Суть проблемы в том, что ресурсы игры запакованы в архив в формате .dat. Вскрытие архива по стандарту Winrar'ом были неудачны. Программы вроде Game Extractor и Dragon Unpacker тоже не справились. Чтение hex-редактором корня архива - тоже никаких зацепок не дали. Единственное что мне удалось выяснить, это то, что игра использует физический движок Newton, и возможно, разработана на движке Torque Game Engine, однако, по дефолту метод запаковки архивов у них совместим с Winrar, поэтому, похоже, разработчики взяли метод шифровки со стороны.
Вопрос: какой программой можно вскрыть архив? Образец одного из архивов здесь: https://disk.yandex.ru/d/HCGV6SLhSBaHjQ
Аноним (Microsoft Windows 10: Chromium based) 20/02/22 Вск 12:36:28 #2 №3116626 
>>3116617 (OP)
> похоже, разработчики взяли метод шифровки со стороны
Файл не выглядит зашифрованным.
Аноним (Microsoft Windows 10: Chromium based) 20/02/22 Вск 12:38:00 #3 №3116628 
>>3116626
Более того, даже сжатым.
Аноним (Microsoft Windows 10: Chromium based) 20/02/22 Вск 12:40:44 #4 №3116631 
1645350043462.jpg
>>3116628
Он абсолютно точно не сжат. Ты можешь его сжать винраром, и ужать до 68%. И когда ты видишь вот такое, это значит что никакой компрессии там нет.
Аноним (Microsoft Windows 10: New Opera) 20/02/22 Вск 12:54:30 #5 №3116647 
>>3116631
Ну, то что файл не сжатый ладно - а вот что он не зашифрован - это как посмотреть. Формат .dat, но как узнать, какую именно программу использовали для создания архива?
Аноним (Google Android: Mobile Safari) 21/02/22 Пнд 02:47:13 #6 №3117025 
>>3116617 (OP)
Тебе бы на форумы датамайнеров. Из наших, емнип, один остался живой.

Я сам периодически пытаюсь вскрыть некоторые паки данных. Нормального ПО для непосвящённых так и не появилось. Создано порядка двух десятков прог под свои конкретные форматы/движки. Универсалы, типа Драгона, удобны, но находят мало.
Все потому, что датамайнят, в большинстве, погромисты, которым удобнее пердолиться через свои декомпиляторы.

Попробуй разные архиваторы, в т.ч. тотал. Поищи игры на том же движке, может есть инфа чем их вскрывали. Я так находил анпакеры нескольких игр с пс1, портированных на пеку.
Аноним (Google Android: Firefox based) 21/02/22 Пнд 06:47:06 #7 №3117048 
>>3116647
>Формат .dat
Это не формат, а часть имени файла блядь.

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

Да и вообще выкладывай свой раретет давай, или ссылку на торренты давай.
Аноним (Microsoft Windows 10: Chromium based) 21/02/22 Пнд 06:52:09 #8 №3117051 
>>3116617 (OP)
Простейший анализ показал, что это XOR 0x66 за которым скрывается ZIP-архив.
Вот тебе маленький кодек для этого файла: https://files.catbox.moe/p8jjs3.zip
Аноним (Linux: Chromium based) 21/02/22 Пнд 09:40:48 #9 №3117070 
>>3117051
Нормальные люди в таких случаях кидают инструкцию по самостоятельному сбору или хотя бы исходники, а не просто голый экзешник с хз чем. Ну если хотят помочь конечно. молодец что полез помогать если что
мимо
Аноним (Microsoft Windows 10: New Opera) 21/02/22 Пнд 10:45:35 #10 №3117082 
>>3117051
Блин, братан, спасибо, от всей души, только >>3117070 прав - я слишком глупенький чтобы понять, как использовать этот кодек, так как гугл никакой инфы внятной по XOR шифрованию не даёт, только кормит учебниками по питону. Но если что - я, может, в программач зайду, их потыкаю.
Аноним (Microsoft Windows 10: Firefox based) 21/02/22 Пнд 10:51:06 #11 №3117087 
image
>>3117082
locale -d из cmd
Аноним (Microsoft Windows 10: New Opera) 21/02/22 Пнд 10:52:46 #12 №3117089 
>>3117048
>Да и вообще выкладывай свой раретет давай, или ссылку на торренты давай.
Магнет URI подойдёт? Просто сейчас я именно на этом торренте раздаю. Походу один из пары человек.
magnet:?xt=urn:btih:D764B223053367725A28943EB5EB4E56DF859EC1&dn=Refuze%20-%20%d0%90%d1%82%d0%b0%d0%ba%d0%b0%20%d0%91%d1%80%d0%b0%d0%ba%d0%b0
Аноним (Microsoft Windows 10: New Opera) 21/02/22 Пнд 11:02:34 #13 №3117092 
>>3117087
>>3117087
Блядь, аноний, ты ювелир, нахуй. Оно не только распаковало, игра ещё и приняла распакованные файлы как родные - т.е. мне больше не нужно запаковывать их назад! Я начал всё это дело с целью перевести игру на инглиш и показать её забугорным игрокам потому что релиза нигде кроме СНГ не было - если движок спокойно скушает изменённые файлы, то можно сказать, что благодаря твоим усилиям у игры есть шанс получить перевод на английский.
Ещё раз - огромное тебе спасибо, анон!
Аноним (Microsoft Windows 10: Firefox based) 21/02/22 Пнд 11:06:55 #14 №3117095 
>>3117092
> Ещё раз - огромное тебе спасибо, анон!
Это не ко мне, его благодари: >>3117051
Аноним (Microsoft Windows 10: New Opera) 21/02/22 Пнд 12:21:25 #15 №3117110 
>>3117092
>>3117051
Короче, всё более-менее. Растровые изображения изменяются и принимаются игрой на-ура. Правда, текст записан в .cs.dso формате - т.е. скомпиленых бинарниках оригинального .cs кода. Это, кстати, подтвердило мою догадку о том, что игра сделана на Torque 3D. Все существующие декомпилёры выдают тупо пустой файл на 1кб вместо исходного кода, но если не менять при перебивке текста длину строки, то игра принимает такой бинарник, как родной. Но если хоть на один символ по длине будет несовпадение - то сразу краш. Но хоть так, однако, потихоньку, перевод ползёт. Ещё раз спасибо, аноний, за помощь.
Аноним (Microsoft Windows 7: Firefox based) 21/02/22 Пнд 15:48:43 #16 №3117197 
>>3117051
Это чем такие маленькие экзешники конпелируются?
Аноним (Microsoft Windows 10: Chromium based) 22/02/22 Втр 08:41:16 #17 №3117344 
>>3117087
Ну вот.. Ты отпостил скриншот и теперь мне стыдно из-за опечатки.
>>3117092
Отлишно. Насчёт dso, попробую посмотреть, что с ними можно сделать. Вчера обкачался движками (благо, торк вскрылся и истекает исходниками на гитхабе), но так и не добрался до местного конпелятора. Сходу понять, что там и зачем не удалось. У строк нет какого-то признака длины, и они выглядят, как тупые ASCIIZ. Но посте них есть структура, похожая на каталог, либо метаданные, либо на код. И я боюсь, что изменения текста скажутся на смещениях в этой "добивке".
Анон, тебе повезло, что ты орудуешь в сторону ru-en. В английском строки короче получаются, и ты можешь забить остаток строки нулями в HEX-редакторе.
Может, потом удастся вскрыть формат.
>>3117197
gcc-ом без стандартной библиотеки.
Аноним (Microsoft Windows 10: New Opera) 22/02/22 Втр 10:18:37 #18 №3117351 
>>3117344
>Насчёт dso, попробую посмотреть, что с ними можно сделать.
А имеет ли смысл? Для мёртвой игры из 2006-ого? Там ведь нужно, по-хорошему, искать версию движка, на котором собирали игру. Впрочем, если тебе ради эксперимента - то можешь почитать, как мужик Broken Synapse разбирал: https://blog.kwiatkowski.fr/?q=en/broken-synapse
>Анон, тебе повезло, что ты орудуешь в сторону ru-en. В английском строки короче получаются, и ты можешь забить остаток строки нулями в HEX-редакторе.
Я тоже так думал, пока методом тыка не понял, что изменять символы могу только в пределах одного сообщения. "План дома" превратился в "HousePlan" без пробела, а опции выбора теперь не Да-Нет, а Ya-No. Начинаю теперь понимать, почему пираты в своё время так калечили текст, потому что очутился в их шкуре, когда вынужден работать без исходников. Работать, кстати, можно и в обычном Notepad++.
А про длину строк спорно, так как грамотный английский язык полон сраных артиклей перед каждым ебаным существительным. Какие-то строки входят в перевод нормально, а какие-то нихуя, и мне приходится думать, как бы творчески переработать текст, чтобы смысл оставался понятным.
Аноним (Microsoft Windows 10: Firefox based) 22/02/22 Втр 10:22:08 #19 №3117352 
>>3117351
> Да-Нет, а Ya-No
Y/N как в беседкоиграх.
> HousePlan
Home Plan
Аноним (Microsoft Windows 10: Firefox based) 22/02/22 Втр 10:28:40 #20 №3117355 
image
>>3117351
> когда вынужден работать без исходников
Эксклюзивы вообще 7 лет МГС 2 переводили без исходников ПС2 версию, но результат получился отличным. Пираты хуйню делали из-за того, что у них сроки были сжатые.
Аноним (Microsoft Windows 10: New Opera) 22/02/22 Втр 10:35:34 #21 №3117356 
>>3117352
>Y/N как в беседкоиграх.
В беседкоиграх интерфейс под такое сочетание заряжен. А тут даже UI не масштабируется. В Full HD ты эти крохотные символы не разглядишь.
>Home Plan
Я такой вариант прорабатывао, но это неграмотное переложение. House -это жилое строение, а Home - место обитания. Т.е. первое это "Дом двухэтажный", а второе это "Дом родной".
>>3117355
>Эксклюзивы вообще 7 лет МГС 2 переводили без исходников ПС2 версию, но результат получился отличным. Пираты хуйню делали из-за того, что у них сроки были сжатые.
Ну ты сравнил. Одно дело фанатский перевод большой командой популярной игры - другое, когда на коленке в одно лицо и нишевый продукт. Тут не только вопрос времени, но и ресурсов. Какой там у пиратов был бюджет?
Аноним (Microsoft Windows 7: Firefox based) 22/02/22 Втр 11:51:11 #22 №3117365 
>>3117344
>gcc-ом без стандартной библиотеки.
А можешь дать исходный код посмотреть и ключи компилятора?
Аноним (Apple Mac: Safari) 22/02/22 Втр 14:26:45 #23 №3117394 
>>3117365
https://pastebin.com/89GqpVFU
Аноним (Microsoft Windows 10: Chromium based) 23/02/22 Срд 11:27:19 #24 №3117695 
>>3117351
> А имеет ли смысл?
Ничто не имеет смысла. Так что не всё ли равно, чем заниматься? Ты вот занимаешься переводом, я программированием. И твоё стремление, честно говоря, разделяю, так как сам много перевожу, только в направлении en-ru. Так уж вышло. Как программы, так и игрушки, и целые серии статей
> Там ведь нужно, по-хорошему, искать версию движка, на котором собирали игру.
Не обязательно. Форматы файлов же не каждый мажор переписывают. Зачем, если оно и так работает? Так и тут вышло. Небольшой лурк показал довольно самодокуменнтированную функцию:
https://github.com/GarageGames/Torque2D/blob/master/engine/source/console/codeBlock.cc#L478
Да и я немного выспался и сам заметил, что там HEX-ом по намагниченному после версии файла написано количество байт, отведённых на строковые ресурсы. Что там дальше — я не заморачивался должны бать флоаты, но ни в одном файле из представленного набора их нет. Всё занулено
> грамотный английский язык полон сраных артиклей перед каждым ебаным существительным
К счастью, на них забивают даже нейтивы. Так что чем ты хуже?

Так или иначе, вот тебе ещё один архив. На этот раз с описанием. https://files.catbox.moe/2y79uk.zip
>>3117070 Спасибо


>>3117365
В принципе, >>3117394 почти всё скопипастил из иды воссоздал, как в оригинале, за исключением ненужных кастований и распидорашенных переходов (меток на 42 и 60 у меня нет. Это всё оптимизации ассенблера gcc). Олсо зацени обработку параметров, бгг.
Аноним (Google Android: Mobile Safari) 23/02/22 Срд 14:47:08 #25 №3117768 
>>3117351
Блять. По классике описал всё, кроме задачи этого самого фиксера.
А нужен он для того, чтобы править число в начале файла, отвечающее за длину блока со строками. Соответственно, ты как обычно лезешь в Notepad++, правишь строки, не заморачиваясь с их длиной главное — не проебать NUL, а потом натравливаешь содержимое архива на .cs.dso. Как натравливать, я там описал.
Для удобства можешь сделать cmd-файл с содержимым вида:
recursive_fixer "путь_к_папке_с_ресурсами"
pause
Аноним (Microsoft Windows 10: New Opera) 23/02/22 Срд 15:29:55 #26 №3117804 
>>3117695
>>3117768
Ну ты, аноний, даёшь. Ще не вмерли русскiе iмиджборды!
>HEX-ом по намагниченному после версии файла написано количество байт, отведённых на строковые ресурсы.
Вот тут, пардон, промашка. HEX даёт суммарное число, отведённых на строки символов суммарно, я так понимаю. А текст разбит про разным string'ам, я так догадываюсь. И нельзя менять не общее число символов во всех string'ах в пределах одного кода, а нельзя менять число символов в отдельном string'е в принципе.
>А нужен он для того, чтобы править число в начале файла, отвечающее за длину блока со строками. Соответственно, ты как обычно лезешь в Notepad++, правишь строки, не заморачиваясь с их длиной главное — не проебать NUL, а потом натравливаешь содержимое архива на .cs.dso. Как натравливать, я там описал.
Я уже протестировал - получил такие результаты:
Сначала перебил тестовую строку, добавив в неё лишних символов. Прогнал через фиксер. Засунул в игру - игра код сожрала, но текст показывать отказалась. Потом из изменённого файла удалил лишние символы - запустил игру - она крашнулась. Т.е. изменённый HEX суммарного числа символов позволяет загружать файл, но вот считать данные из него игра уже не может. Я это с самого старта обнаружил, когда решил схитрожопить и в одном сообщении символов добавить, а в другом - убавить. Игра запустилась, так как суммарное число было прежним, но прочитать код уже не смогла.
Иногда, правда, показывался текст, но он был обрывочным или вообще из других сообщений. Видимо, съезжают " символы выделяющие string в коде. А тут без декомпиляции, наверное, уже никак. Но всё равно большое спасибо за помощь.
P.S. Смог твоим деархиватором вскрыть все оставшиеся ресурсы игры - зашифрованы они одинаково. А вот ресурсы из английской демо-версии нет, там уже другой код, но его содержимое мне уже нахуй не нужно, если честно. Так вот - в ресурсах наткнулся на текстуру топлесс героини (той, что на обложке) - закинул в основную игру по нужному пути, перебив название файла на то, которое использует игра, и да, получил топлесс героиню, светящую грудью, как женщины древнего Крита. Жаль что игру нормально не заскриншотишь, показал бы что перевожу хоть.
Аноним (Apple GayPad: Safari) 23/02/22 Срд 17:41:56 #27 №3117861 
>>3117695
Ты прикольный, давно тут таких не было, авер?
Аноним (Microsoft Windows 10: Chromium based) 23/02/22 Срд 20:19:51 #28 №3117918 
>>3117804
> HEX даёт суммарное число, отведённых на строки символов суммарно, я так понимаю.
Верно. Но в пределах одного файла это всё равно надо фиксить. Судя по структуре dso-в, как я уже написал, строки выглядят, как ASCIIZ (то есть, заканчиваются на Zero — нулевой байт). Рядом с ними нигде не задана их длина, так что, по моим прикидкам, всё должно было работать...
Остаётся ещё один вариант:
> нельзя менять число символов в отдельном string'е в принципе
Йес. В секции кода есть ссылки на конкретные смещения на строки. С форматом файла я почти разобрался. Завтра, наверное, допишу фиксер.
>>3117861
Конечно не было. Чего тут делать? Вёдра не конпеляют, даже параметры dd путают ладно бы один человек в треде, так их целых два таких, гения. Техническая деградация населения во все поля. И ладно бы их ссаными тапками гнали, так все смирились. С 17-го года где-то захожу набегами, за реально интересными вопросами и реквестами типа ОП-овского.
Не авер, но сильно им сочувствующий
Аноним (Microsoft Windows 10: New Opera) OP 23/02/22 Срд 20:40:11 #29 №3117927 
>>3117918
>Завтра, наверное, допишу фиксер.
Спасибо за бесплатный труд, товарищ анонимус! Хотя, завтра я уже точно также закончу текст перевода, пусть даже и в таком, сжатом виде. Если новая версия фиксера будет работать нормально, и мне удастся использовать файлы скриптов с увеличенным числом символов в сообщениях, то даже не знаю - наверное нужно будет обязательно твоё имя или ник упомянуть в авторах перевода - без тебя бы он был, скорее всего, неосуществим.
Если не хочешь раскрывать здесь свои контакты, то я могу дать свой для этого дела, потому что писать в титрах просто "анонимус" как-то слишком мелко для такой помощи.
Аноним (Microsoft Windows 7: Firefox based) 24/02/22 Чтв 00:05:28 #30 №3118019 
Тоже иногда ковыряю данные всяких игр чтобы найти там графику, музыку. Чаще всего игровые архивы попадаются не сжатыми, то есть распространенные форматы графики и музыки в них можно найти по характерным особенностям формата и выдрать из архива. Для этого написал несколько программулин, под каждый формат (jpg, png, dds, webp, wav, ogg, opus, mp3). Интересное это дело.
Аноним (Google Android: Mobile Safari) 25/02/22 Птн 06:25:14 #31 №3118291 
>>3117927
Задачка растянулась. Я думал поначалу, что можно будет посчитать смещения текущих строк, и тупо их заменить в файле, но это было бы слишком просто. Во-первых, смещения хранятся в двух форматах: однобайтовом, для значений до 0xFE включительно, и пятмбайтовом (0xFF, говорящий, что это "длинный" формат, и 4 байта смещения).
Если значение смещения начала строки уменьшится, это не критично. Но если предыдущие строки в сумме вышли длиннее, а изначальное смещение было менее 0xFF, это значит, что в байткоде надо менять формат смещения. Но это не сложно.
Во-вторых, не все строки в начале относятся к глобальным параметрам. Это значит, что надо искать опкоды, которые эти строки используют, и принимать их во внимание.
Третье, самое мерзкое. В конце файла, после секции кода, есть таблица, служащая для замены байткода после его прочтения. И там тоже есть чёртовы смещения, и их тоже надо принимать в расчёт при патче файла.

Пока писал, в голову пришло хорошее дзенское решение. Обратить силу противника против него и банально продлить таблицу с заменами. Это автоматически решает две проблемы из трёх. А уж оставшиеся опкоды учесть будет не так сложно (ну, я надеюсь), их всего-то штуки три-четыре должно быть.

Ох уж эти капиталисты, всё работой с деньгами меряют. А как же just for fun? Хотя, вдруг ты физик-экономист
Ну и это, какой же уважающий себя анонимус будет раскрывать контактные данные? Если и соберёшься указывать что-то, укажи AHOHNMYC

>>3118019
Интересное. Но ведь уже есть Dragon Unpacker и photorec. Неужели их не хватает?
Аноним (Microsoft Windows 10: New Opera) 25/02/22 Птн 10:07:10 #32 №3118321 
>>3118291
Ох, даже не знаю, ждать ли от тебя решения с кодами игры, или выпустить перевод уже так. Особенно в связи с последними событиями.
Аноним (Google Android: Mobile Safari) 25/02/22 Птн 12:02:55 #33 №3118334 
>>3118321
Переживаешь, что меня застреляют? Это удел /po. У нас тут диалоги о рыбалке софте.
Аноним (Microsoft Windows 7: Firefox based) 25/02/22 Птн 12:46:55 #34 №3118345 
>>3118291
> Но ведь уже есть Dragon Unpacker и photorec. Неужели их не хватает?
Интересно же самому изобрести велосипед и понимать как он работает. Тогда кайф. А еще когда повторно пригождается код, тогда ваще офигенно.
comments powered by Disqus

Отзывы и предложения