Войти
  1. »
  2. »
  3. »
  4. 3D Via Virtools
Новые публикации Скрыть панель справаПоказать панель справа

3D Via Virtools

2014-08-28T11:31:20+04:00 2014-08-28T11:31:20+04:00
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 1 отправлено 22:26, 17.08.2014
Здравствуйте!Я в первые на форуме,но с zlib'ом знаком.В не безизвестной серии консольных игр(а именно в LCS/VCS PSP/PS2) используется этот алгоритм компресии-с помощью него запакован интересный файл,который содержит кучу заветных модерам и локализаторам ресурсов,но самым желанным оказались шрифты.В распакованном виде файл является осколком дампа памяти консоли и данные в нем сложно структуированы,что не позволяет менять размер изменяемых файлов в большую сторону,к тому же внутри распакованного файла вложенны ещё запакованные zlib'ом куски(в том числе и шрифты).Слава богам проверки на размер запакованного файла там не было,но запакованные шрифты(уже изменённые) не влезали в распакованный game.dtz.Пришлось рыть разметку файла,смещать следующие данные после шрифтов,а некоторые буквы в шрифтах понерфить.В конце концов локализовали,но помимо локализации там ещё много чего можно изменить.Мы нашли общий смысл для многих алгоритмов сжатия,в том числе и zlib'а-чем больше повторяющихся байт-тем эффективнее сжатие. По удалив кучу дубликатов информации в архиве и мусора,пастерилизовывали текстуры для повторения байтов-делу стало легче.А теперь к советам:
1.SimplyZip лучше использовать для распаковки,т.к. он находит конец архива самостоятельно,но не рекомендуется для запаковки,т.к. он сжимает только средним уровнем.
2.Для запаковки лучше использовать PasZlibFile,т.к. он использует три уровня компрессии(минимальный,средний,максимальный),но не рекомендуется использовать к распаковке,т.к. не распознаёт конец архива сам и если вы предоставите ему сжатый файл с лишним мусором в конце-архиватор зависнет.
По иронии судьбы я пришёл сюда не по этой причине-мне нужно русицровать большую прогу,в папках нашёл языковой файл,открываю в hex editor neo-знакомая сигнатура-78 da,ну я сразу же побежал открывать PasZlibFile'ом,но он завис,немного погуглив попал к вам и тут мне напомнили про SimplyZip(до этого момента не знал,что он автоматом находит конец),получилось распаковать,открываю расп.кусок в хексе и вижу тупой набор байт,который не указывает ни на музыку,ни на шрифты,ни на текст,ни на видео,без каких либо вступлений типо сигнатур и блока описателей.Сижу,думаю...и тут мне стало интересно,что в конце отсёк SimplyZip.Заархивировал кусок обратно SimplyZip'ом и сравнил то,что получилось с оригинальным архивом.Всё совпало байт в байт,однако оригинал на 8 байт больше,это навело меня на мысль,что эти отсечённые 8 байт - восьмибайтный ключ шифрования,которым и надо раскриптовать распакованный архив,т.е. -Распаковка-Раскриптовка-Русификация-Криптовка-Запаковка.Проблема в том,что я ранее не имел дело с криптовой-раскриптовкой ключом-направьте пожалуйста в нужное русло.

Последний раз редактировал Nexus 00:05, 18.08.2014
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 854 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 2 отправлено 00:33, 18.08.2014
Цитата DenielX ()
Проблема в том,что я ранее не имел дело с криптовой-раскриптовкой ключом-направьте пожалуйста в нужное русло.

Не имею опыта работы с криптованными архивами. Исходники ZLIB открыты и любой шарящий программист небольшой правкой кода может изменить алгоритм работы архиватора под свои нужды, не говоря уже о методе криптования. sad


------------------------------------------
Кто ищет, тот всегда найдет!
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 3 отправлено 01:02, 18.08.2014
Да нет,не архив закриптован,уже распакованные данные криптованы,т.е. я распаковываю,а в распакованный архив ещё и криптован 8 байтным ключом,который оказывается хранился после zlib архива.Есть подозрения что данные заксорили.

Последний раз редактировал Leserg 01:09, 18.08.2014
Мастер
  1. Офлайн
  2. Команда сайта.
  3. 854 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 4 отправлено 01:13, 18.08.2014
Цитата DenielX ()
Есть подозрения что данные заксорили.

Ничем помочь не могу. sad
Возможно другие участники форума вам что-то подскажут.


------------------------------------------
Кто ищет, тот всегда найдет!
Сталкер
  1. Офлайн
  2. Стажер
  3. 145 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 5 отправлено 02:16, 18.08.2014
С этим вопросом наверно лучше на http://exelab.ru  обратиться.

Последний раз редактировал mishem 02:18, 18.08.2014
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 6 отправлено 17:06, 18.08.2014
DenielX, нсколько я знаю иры LCS/VCS уже были давно локализованы. Или вы занимаетесь модингом игр и просто нужны потроха этого архива?


А, невнимательно прочитал, вопрос о другом...
Цитата DenielX ()
мне нужно русицровать большую прогу

Ссыль в студию, или в ВП, если боитесь светиться. Возможно, что сообща что-то и сделаем, тут и не таких мамонтов валили. biggrin

Цитата mishem ()
С этим вопросом наверно лучше на http://exelab.ru  обратиться.

Еще можно на wasm.ru обратиться, там мне больше помогли.
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 7 отправлено 18:11, 18.08.2014
Движок Virtools хочу русифицировать(3D Via Virtools v5).А про GTA-просто предисловие,что бы подчеркнуть иронию судьбы и поделиться практическими советами по модификации zlib потоков.И да,до сих пор юзаю моддинг консольных версий gta(psp),да и распотрошили мы давно уже все файлы запакованные zlib'ом.А ссылка мало чего даст-если нужен сам продукт,то он даже на торрентах редкий,и ещё реже - кто ни будь стоит на раздаче.Может на народ мне выложить?

Последний раз редактировал DenielX 18:20, 18.08.2014
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 8 отправлено 18:51, 18.08.2014
Цитата DenielX ()
Может на народ мне выложить?

Не нужно, на Рутрекере раздает наш старый-добрый знакомый LinXP. Но чтобы не качать полтора гига, можно запковать только самые критические файлы - EXE файл, нужные библиотеки, если они нужны, и сам архив, который нужно анализировать.
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 9 отправлено 19:04, 18.08.2014
Выложу всё,что нужно и ничего лишнего.Но вопрос с которым я ещё не определился-там куча скриптов импорта/экспорта(движок все таки) их переводить надо?Просто как-то не складывается в мозгу.И справку не хочется переводить,да и не к чему.И в догонку-как проэкт русификации стартанёт,надо перекладывать всё что в этой теме выложу(части движка)или лучше уже сейчас отдельную тему создавать?
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 10 отправлено 19:20, 18.08.2014
Цитата DenielX ()
там куча скриптов импорта/экспорта(движок все таки) их переводить надо?

Да я без понятия, это вам же виднее как переводчику biggrin

Цитата DenielX ()
И справку не хочется переводить,да и не к чему

В сети где-то на русском встречал недавно.

Цитата DenielX ()
или лучше уже сейчас отдельную тему создавать?

Перенесем потом в отдельную тему к Вопросам и Ответам.
Или пускай кто-то из наших перенесет, а то у меня Инет сейчас барахлит...
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 11 отправлено 19:38, 18.08.2014
Поправка-начинающему переводчику,я хоть и переводил,но своего проэкта по переводу у меня не было,так по мелочи,там по переводил,там попробывал,там порылся.Вот где серьёзно углублялся в ньюансы перевода-так это в gta psp версий.На счёт русской справки по этому движку-вряд ли,т.к. двиг давно забыт,но на нем конструировались поистине шедевры,да не то что справку-рускоязычные форумы по этому двигу почти все закрылись.Потом так потом перенесём.Выкладываю архив ~30 мегов.В одной папке-все причастные к переводу файлы,в другой папке шифрованный файл в запакованном и распакованном виде + ключ.Ссылка на архив https://yadi.sk/d/hirE3ByAZySM5.
P.S.Я имел ввиду диалоговые окна плагинов)

Последний раз редактировал DenielX 11:23, 19.08.2014
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 12 отправлено 23:57, 19.08.2014
DenielX, а почему вы не можете сразу перевести ресурсы в самом исполняемом файле? Зачем лезть в языковый файл, если все барахло зашито в экзешнике?
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 13 отправлено 00:31, 20.08.2014
Откуда такая уверенность что exe файл содержит весь диалоговый интерфейс?И шрифты же он не из винды берёт=>русских шрифтов нет,вот хотя бы первая причина того,почему нельзя просто так взять и перевести-соответствия символ<->пикча в шрифтах нету.А впрочем ща языковой удалю и проверим.Я думаю,что это не языковой файл,а инглиш шрифты зашифрованные.
Проверил-все таки грузит он,что то из него(english.nlp).При удалении и последующем запуске пишет,что нет языкового пакета,потом если нажать ок в этом предупреждении,приложение вылетает.Надо расшифровать его или провести анализ екзешника.

Последний раз редактировал DenielX 00:39, 20.08.2014
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 14 отправлено 00:44, 20.08.2014
DenielX, на раскриптовку файла у меня может уйти неделя или больше. Я не слишком большой профи в этих делах, поэтому и искал более легких путей. Но вероятность успеха в его расшифровке все же имеется, так как уже найден участок кода в экзешнике, который отвечает за расшифровку и загрузку в память языкового файла.
Также можете создать параллельные ветки на вышеуказанных хакерских сайтах для ускорения процесса расшифровки файла, так как мы щдесь не ахти какие спецы по этому делу и всего лишь учимся всем этим премудростям biggrin
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 15 отправлено 01:13, 20.08.2014
Это хорошо)Забил на декриптовку со вчерашнего дня-занялся практической частью(переводом) по тематике проги.Сейчас в листинге перевода ~6500 символов написано,из них половину-это перевод.А что там 64 битным ключом,который я нашёл?пригодился или ещё нет?
P.S.Можно по хардкору перевести-транслитом biggrin .
И кстати раз кусок кода найден,уже известно какие алгоритмы криптовки он использует?Я первым делом попробывал XOR.А именно посмотрел ключ в десятичной системе и ввёл его в качестве ключа к файлу,на выходе получилась лажа,ключ пробовал в различных вариациях(ну типо старшие байты младшими менял,дешифровка в два прохода с делением ключа пополам на 4 байтовые куски для каждого прохода и т.д.). Ни чё из этого не вышло.

Последний раз редактировал DenielX 01:22, 20.08.2014
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 16 отправлено 01:51, 20.08.2014
Цитата DenielX ()
А что там 64 битным ключом,который я нашёл?пригодился или ещё нет?

Я еще не определил что это за мусор, еще посмотрю.

Оооо! При переводе программы вылазят крякозябли wacko Это еще дополнительный геморр с переводом.

Цитата DenielX ()
И кстати раз кусок кода найден,уже известно какие алгоритмы криптовки он использует?

Хз, сомтреть нужно, в папке есть CKZlib.dll, который что-то делает, вот от него и отталкиваюсь.
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 17 отправлено 19:31, 20.08.2014
Цитата Nexus ()
Оооо! При переводе программы вылазят крякозябли Это еще дополнительный геморр с переводом.
Это значит,что в проге нет русских шрифтов.Тут система везде такая:есть символ,и есть соответствующее этому символу изображение,к каждому символу присваивается ID,по этому ID'у прога ищет изображение,т.е. символ->ID->изображение символа.Тут загвоздка в последних двух.По тем ID'ам,где должны быть русские символы в файле шрифтов обычно те самые "кракозяблики",что бы "кракозяблики" исчезли нужно заместо них нарисовать(или взять аналогичные готовые)шрифты,что бы ID соответствовал русскому шрифту,а не "кракозяблику".Прикрепляю тебе файл осмысленного перевода,подобранного под эту прогу лично мной.https://yadi.sk/i/5112yWG4a7tp8
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 18 отправлено 20:23, 20.08.2014
В общем, все встало на свои места:
Якобы 8-байтовый ключ - оказался обычной контрольной суммой уже сжатого ZLIB архива и прикрепленного к этому же архиву. Наверное для проверки целостности ZLIB архива от шаловливых переводчиков типа нас biggrin
После распаковки языкового файла (ZLIB архива) с помощью библиотеки CKZlib.dll (внутренняя процедура uncompress) идет собственно сама дешифровка уже распакованного языкового файла. Алгоритм там собственно не мудреный - обычный XOR байта на следующий байт с прибавлением к нему 7F и еще какой-то математической операцией, я сильно не вникал. Уже дешифрованный файл прикрепил к этому сообщению.
Ну а теперь самое главное - это обратная операция шифровки и упаковки файла. Как поступить?
1. Написать собственную утилиту шифрования файла. На это у меня может уйти время, так как я очень хреновый программист biggrin
2. Подправить сам исполняемый файл так, чтобы программа не пыталась дешифровать файл, а тупо просто считывала данные из языкового файла и использовала их для своих нужд. Это у меня получится намного быстрее, потому как там нужно всего лишь обнулить небольшшой фрагмент кода и все. Останется только запаковать языковый файл каким-нибудь ZLIB архиватором и присобачить к нему в конце CRC-сумму.
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 19 отправлено 21:20, 20.08.2014
Молодец!А мне собственно кроме XOR'а ничего дельного в голову не приходило.А контролка....Я должен был догадаться(нечто подобное уже встречал) bang Править код экзешника или делать криптовщик языкового файла upset ?Думаю,что надо править екзешник,т.к. и быстро,и удобней перевод в дальнейшем править+нету кряков затрагивающих экзешник.Я бегло прошёлся по декриптованному языковому паку-это не вся писанина,видимо части в экзешнике и дллках,но это особо ничего не меняет.Я вот думаю-шрифты может стандартные юзаются или же в дллки пихнули?Надо подумать над тем как подцепить русские шрифты...В экзешнике случаем на эту операцию не натыкался?Надо найти библиотеку шрифтов,но т.к. я с анализом исполняемых файлов не очень-лучше не буду под ногами мешаться,а вернусь к переводу.У тебя +1 за декриптовку).
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 20 отправлено 22:40, 21.08.2014
Не могу найти чем бы вычислить контрольную сумму в 8 байт уже запакованного ZLIB архива. Получается, что после запаковки Zlib нужно еще к нему в конце добавить 8-байтный CRC, но сколько не вычислял так неичего и не смог подобрать - ни один результат не совпадает со старым "ключем". Может вырезать с программы эту проверку целостности архивов и не париться? wacko
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 21 отправлено 01:28, 22.08.2014
Вот чего я не могу понять-используется crc64,а у меня даже не получается получить контрольную сумму оригинального(запакованного) файла именно такую,какая должна быть.Можешь объяснить в какой проге ты crc вычислял?И ещё-я вычислял предварительно вырезав контролку из файла.

Последний раз редактировал DenielX 01:28, 22.08.2014
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 22 отправлено 01:47, 22.08.2014
Короче, поубирал с кода экзешника нафиг все проверки Zlib архивов и их шифрование. Вот сам экзешник и распакованный языковый файл - ссыль
Теперь сам языковый файл будет не запаковван и не зашифрован, а будет в обычном текстовом представлении, только расширение у него будет старое - .nlp. Можно сразу его править и тут же тестировать сам перевод.
Самое прикольное, что для всего этого облегчения понадобилось заNOPить(обнулить) всего 2 байта biggrin ...

Но у меня интерфейс проги все равно в кракозябликах, может у тебя нормально будет отображаться. Если нет, то будем решать что делать дальше. Возможно, что нудно где-то сменить кодировку. Ну это уже завтра...
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 23 отправлено 12:14, 22.08.2014
Круто!Ты и проверку названия убрал?Т.е. теперь прога в папке ищет только по расширению,я переименовал в russian.nlp,а english.nlp убрал,а так же в заголовке вписал Language:Russian и прога поняла этот файл(кракозябры видел).И что самое странное-твой exe'шник понимает оригинальный заксоренный и запакованный в zlib english.nlp happy или ты алгоритмы дешифровки оставил,а проверку убрал?На счёт кракозябр я тебе уже говорил,что это из-за шрифтов,простой пример:



Видишь-русским символам соответствуют кракозябры-так практически в любой проге или игре.Решение-перерисовать кракозябры на русские символы,либо переназначить английские на русские,а потом перерисовать английские на русские,но при этом в проге не будет поддерживаться английский.Я за первый вариант.Есть ещё вариант,что своих шрифтов у проги нет и она берёт их из винды по ID шрифтов,В таком случае надо найти идентификатор русских шрифтов и вставить ID заместо старого ID'а.Ещё надо найти таблицу ширин шрифтов,её назначение примерно такое:есть изображение шрифтов 512х512,символ "A" храниться с 0 по 32 пиксель по оси X и с 0 по 32 пиксель по оси Y.То бишь вводишь символ,а таблица ширин определяет его координаты в изображении шрифтов.Прилагаю таблицы шрифтов в бинарном виде от неких игр в качестве примера,что бы тебе было легче найти её в exe'шнике.
https://yadi.sk/d/T5Lb4us6aDPcv
Сталкер
  1. Офлайн
  2. Стажер
  3. 145 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 24 отправлено 13:06, 22.08.2014
DenielX, вам сюда http://www.angelcode.com/products/bmfont/
или сюда http://www.gamedev.ru/projects/forum/?id=152527
Или в гугль с запросом Bitmap Генератор шрифта

Последний раз редактировал mishem 13:12, 22.08.2014
Прибывший
  1. Офлайн
  2. Участники
  3. 15 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 25 отправлено 13:16, 22.08.2014
Создание шрифтов-дело то плёвое.Но сначала надо найти где прога инициализирует шрифты,где они хранятся и где находится таблица ширин-вот самое сложное,а создание уже на втором плане,я рисую шрифты в ручную в GIMP.
Старожил
  1. Офлайн
  2. Администраторы
  3. 620 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 26 отправлено 19:11, 22.08.2014
Цитата DenielX ()
Круто!Ты и проверку названия убрал?Т.е. теперь прога в папке ищет только по расширению,я переименовал в russian.nlp,а english.nlp убрал,а так же в заголовке вписал Language:Russian и прога поняла этот файл(кракозябры видел).И что самое странное-твой exe'шник понимает оригинальный заксоренный и запакованный в zlib english.nlp или ты алгоритмы дешифровки оставил,а проверку убрал?

Программе теперь все равно, зашифрован языковый файл или нет.

Цитата DenielX ()
На счёт кракозябр я тебе уже говорил,что это из-за шрифтов,

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

Доступ закрыт.

  1. Вам запрещено отвечать в темах данного форума.

Последние темы

  1. PictureCode Photo Ninja 1.3.4b Rus...
    Автор: AlexSergeev Вчера, 19:04
  2. Русская версия RuPack Topaz ReStyle...
    Автор: mason777 Вчера, 10:18
  3. CATraxx
    Автор: WYLEK Вчера, 08:58
  4. Turbo Studio v17.0.836
    Автор: Dizel Вчера, 01:16
  5. Русификатор Windows 7 Manager 5.1.9.2
    Автор: druc 15:58, 16.01.2017
  6. SoftColor PhotoEQ 10.02 Rus
    Автор: AlexSergeev 16:45, 13.01.2017

Изменения статуса

  1. профиль Офлайн 05:14, 11.12.2016