Этот сайт создан как клуб русификаторщиков. Для нас существуют три основных правила.
1. Мы никому и ничего не должны!
2.Один пришедший на сайт толковый русификаторщик дороже всех пользователей.
3. Мы делаем русификаторы для своего сайта, но в оригинале ими могут пользоваться все в интернете.
Небольшое руководство с описанием формата Zlib-архивов, методике их ручного поиска, извлечения и замены в файлах приложений, а также применение различных утилит, облегчающих работу с таким типом данных. Документ написан по материалам форума BlackStar Localizations Studio. Информация обновлена и дополнена. Рассчитана на широкий круг пользователей, которые занимаются локализацией ПО.
Во-первых, хорошо, что ты написал статью, не нужно мне теперь писать, я буду просто дополнять
А вот и дополнения: ------------------------
1. Касаемо сигнатуры. Третье число после 78 DA (9C, 01) абсолютно ничего не значит. Первое число - сигнатура ZLIB архива, второе число - степень сжатия (одна из трех). И точка. Расширения и тип файлов ничего не значат - в архив не записывается даже название файла, куда уж о типе файла говорить... То, что часто попадается совпадение, такое как 78 DA EC или 78 DA ED, так это из-за суммирования начальных байт, у разных файлов оно разное. Например, в той же Streaming Audio Recorder попался упакованный DLL файл с сигнатурой 78 DA D4. Так что нужно искать сигнатуру только по первым 2 байтам.
2. Для упрощения поиска ZLIB архивов внутри файлов нужно перед сигнатурой, например 78 DA, приписывать еще и 00 - будет 00 78 DA. Почему? Потому что между блоками архивов должно быть разделительное пространство. Хотя данное предположение является теорией; может даже встретиться такое западло как FF FF 78 DA. В общем, надо отрабатывать разные варианты.
Еще не помешало бы добавить сюда скрины по работе в WinHex с этим архивом. Не все же знают, что найдя нужную сигнатуру архива не нужно искать его конец (архива), а можно "откусить" лишний кусок EXE файла и впихнуть в отдельный файл. Потом этому же файлу необходимо присвоить какое-нибудь расширение, чтобы программа Simplyzip могла с ним нормально работать.
Еще не помешало бы добавить сюда скрины по работе в WinHex с этим архивом. Не все же знают, что найдя нужную сигнатуру архива не нужно искать его конец (архива), а можно "откусить" лишний кусок EXE файла и впихнуть в отдельный файл. Потом этому же файлу необходимо присвоить какое-нибудь расширение, чтобы программа Simplyzip могла с ним нормально работать.
Я первый раз слышу с этого момента подробнее....пожалуйста...
до определённого места. И место это, сжатие до размера. Размер изображения эффекта не дал.
Сокращал перевод, лишнее забивал нулевыми байтами. Но результата нет. Обращай внимание на размер создаваемого локализованного файла. Если он больше размера оригинального файла, то никоим образом не получится получить новый размер архива меньше исходного. Например, я работал с версией Streaming Audio Recorder v.2.8. Размер оригинального файла программы - 2 225 152 байт. После описанных выше действий в редакторе Radialix, размер локализованного файла у меня получается 2 163 712 байт. Как видишь новый размер меньше оригинального (за счет замены двух изображений на оптимизированные!), соответственно и архив получится меньше оригинального.
Очевидно я чего-то не догоняю, как добиваться желаемого размера.
Если ты работаешь в Radialix"e, то в нем есть небольшой нюанс: те ресурсы, которые не будут переводиться или изменяться, необходимо переключить в режим "только для чтения".
Проведи небольшой эксперимент: 1) Создай новый проект локализации файла Streaming-Audio-Recorder.exe. Radialix выдаст огромный список ошибок (по крайней мере у меня это так).
Ничего не переводи, а создай локализованный файл. Посмотри размер полученного файла. Например у меня получился 2 378 240 байт, т.е. больше оригинального, а мы еще ничего не переводили.
2) Теперь в менеджере ресурсов установи всем режим "Только для чтения", кроме ресурсов StreamingAudioRecorder.Resources.resources, StreamingAudioRecorder.frmAbout.resources (в них находятся изображения), StreamingAudioRecorder.help-xp.html (документ HTML).
Ресурс #US - это жестко-закодированные строки, где у каждой из них признак "Только для чтения" установлен индивидуально. Сохрани проект и закрой редактор полностью.
3) Снова запусти Radialix и открой только что созданный проект локализации. Ошибок быть не должно.
Ничего не переводи, создай локализованный файл. Его размер должен быть в пределах оригинального, например у меня получился 2 230 784 байт. Т.е. всего лишь на 5 Кб больше оригинального.
4) Если теперь заменить те два изображения на оптимизированные и создать новый локализованный файл, то его размер будет меньше оригинального, например у меня - 2 163 712 байт (это зависит от суммарного размера оптимизированных изображений). После этого можно переводить документ HTML и необходимые жестко-закодированные строки.
Leserg, насчет 00 перед сигнатурой - то была просто теория. И ты ее благополучно похерил . Пример привел просто убойный. Так что проблема в размышлении отпала - нужно пробивать и те, и эти варианты. А вот насчет
А вот здесь я не согласен. Открой в НЕХ-редакторе любой файл (документ, изображение, DLL-ку и т.д.) и задай поиск поиск по байтам 78 DA.
с тобой тоже не согласен . Приведу тоже убойный пример Вот возьми тот же Streaming Audio Recorder, найди и распакуй по своему методу ZLIB архивы. Если будешь искать сигнатуру по трем байтам из своей таблицы, то недосчитаешься одного архива. Вот возьми распакуй и отпишешься здесь
Та я ж не против, все прекрасно вижу. Тема то не обкатанная еще, новая, пахать не перепахать. Просто надо добавить эту сигнатуру как частный случай и пополнять базу в дальнейшем. Другого варианта пока предложить не могу.
Leserg, да ты что!!! И не вздумай. Кому понадобится - так пускай здеся обсуждают вопрос. Материал уникальный, будет дополняться по мере приобретения опыта в данном деле .
Программа TrIDNet определяет дескриптор zlib Код? <Pattern><Bytes>1F8B080000000000000B</Bytes><Pos>0</Pos></Pattern> Вместо ASCII Pos ? Вот скрин из программы
После архивации программой от Leserg показывает сжатие и что внутри