Сотовые телефоны: ни сот, ни мёда |
Добро пожаловать, гость ( Вход | Регистрация )
Сотовые телефоны: ни сот, ни мёда |
-=CHE@TER=- |
May 5 2007, 09:47
Сообщение
#1
|
Walter Sullivan Группа: Root Admin Сообщений: 1,361 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 314 раз(а) |
BenQ-Siemens S68 и темы для него
или ода о разработчиках Семёна Ы68 руки-из-жопы Не так давно попросил меня знакомый помочь ему сделать свою тему для его BenQ-Siemens S68. Темы лежат в файле .SDT, который представляет из себя просто-напросто переименованный .ZIP-архив. Распаковав и изменив там всё что нужно, столкнулись с такой проблемой: при запаковке обратно в .ZIP (WinRAR'ом или WinZIP'ом) получившийся файл (переименованный обратно в .SDT) не открывался телефоном - шло сообщение, что формат неверный. Даже при банальной распаковке/запаковке без изменения файлов - всё-равно шло сообщение про "неверный формат". Ну что делать - полез я на сайт семёна, искать редактор тем. Что меня там дико разочаровало: 1) Ничего оттуда скачать нельзя, пока не зарегистрируешься (бесит, ну ладно) 2) Редактор занимает 22 мегабайта (!!!), но он [далее идут местные идиоматические выражения, отражающие душевное состояние автора на тот момент, когда он скачал этот редактор и обнаружил, что тот] не идёт, если не скачать к нему ещё Java 1.4.0, который тоже весит весьма нехило. Трафик у меня дорогой, так что я был просто злой как чёрт и удавил бы любого из разработчиков этой адской конторы, если бы мне хоть один из них попался под руку. И только потом я (признаю - тупень) занялся тем, чем нужно было заняться с самого начала: откопал документацию на .ZIP (см. "Application Note on the .ZIP file format") (заодно узнал, что в 2008-ом ему будет 20 лет) и стал смотреть, что там можно было такое написать, чтобы не запортить сам формат, но и при этом пометить файл, что он - "свой". Оказалось, что в заголовке .ZIP обнулён 6-ой байт (6-ой от начала файла). Так вот - если туда записать 0x08, то такой .ZIP архив, переименованный в .SDT будет видеться семёном без всяких проблем как "родной"! Справка: два байта (WORD) по смещению 0000000006 отвечают за минимальную версию ZIP необходимую для распаковки архива. Таким образом заголовок нормального .ZIP файла выглядит так: 50 4B 03 04 14 00 00 00 а "исправленного" .SDT-архива должен выглядеть так: 50 4B 03 04 14 00 08 00 Надеюсь, то что я написал, кому-нибудь поможет и сбережёт нервные клетки, время и деньги. Вот, собственно, код небольшой консольной программки, которая делает все соответствующие исправления: CODE Program sdtfix; {$APPTYPE CONSOLE} Var Fl: File; Cr: Cardinal; Begin If ParamCount<>1 Then Exit; AssignFile(Fl, ParamStr(1)); Reset(Fl, 1); BlockRead(Fl, Cr, 4); If Cr = $04034B50 Then { 'PK\03\04' } Begin Cr:=$00080014; BlockWrite(Fl, Cr, 4); End; CloseFile(Fl); End. |
Упрощённая версия | Сейчас: 7th November 2024 - 03:29 |