Сейчас на форуме: _MBK_, asfa (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Формат файла
Посл.ответ Сообщение

Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 июля 2009 12:27 · Поправил: Arnon
· Личное сообщение · #1

Здравствуйте. У одной программы есть собственный формат файлов .gtd в которых хранятся картинки/музыка/строчки текста. Файлы эти не шифруются не пакуются, т.е. тем же Dragon Unpacker'ом можно выдрать оттуда рисунки и музыку. Но мне нужно каким-то образом перевести строчки, которые там хранятся. Начальный язык - японский. С помощью hex-редактора можно это сделать, но сталкиваешься с жестким ограничением по количеству символов (в японском два иероглифа - уже слово, а для русского это мало).
Собственно просьба к тем кто в этом разбирается, узнать структуру файла и создать простую программку распознания строк и их редактирования и по возможности выдирания/замены рисунков.
Пример такого файла выкладываю в аттач.

В первом файле: 1 строчка текста - название - по адресу 0x23h (4 байта)
2 строчка - описание - по адресу 0x29h (34 байта)
дальше идёт png'шка

Если есть ещё какие-то варианты как отредактировать, расширив эти строки, то буду благодарен если такие найдутся.

26e6_02.07.2009_CRACKLAB.rU.tgz - 1.gtd

ещё примеры этих файлов: http://slil.ru/27806315




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 02 июля 2009 12:51
· Личное сообщение · #2

Arnon
по идее строки либо чемто заканчиваются, либо гдето укзан их размер.
по адресу 0x22h мы видим какраз 02, а вот по адресу 29h как раз мы видим 0 через 32 байта)
ты правильно определил эти строки? может это одна большая строка оканчивающаяся нулём? попробуй воткнуть ноль в середину если строка обрежется то для увеличения нужно передвинуть ноль подальше. либо искать где указан размер.

-----
zzz




Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 июля 2009 13:05 · Поправил: Arnon
· Личное сообщение · #3

Ошибся в первой строке, там 4 байта, сорри (строки в юникоде). Вставка нулей как и любых других символов (1-2 байта) посреди строки приводит к тому что файл вообще не читается (в самой программе он должен отображаться в списке шаблонов, а его нет).

Спасибо за наводку.
Кстати, действительно кажется перед строкой стоит её длина - у первой два символа (02 HEX = 2 DEC (1 символ = 2 байта)). У второй семнадцать символов (11 HEX = 17 DEC). Но только это не помогло)
изменяю размер первой 02 => 04 и втыкаю 4 байта с теми же символами, но без результатов - файл перестаёт читаться...




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 02 июля 2009 13:25
· Личное сообщение · #4

Arnon
выклыдвай прогу

-----
zzz




Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 июля 2009 14:15 · Поправил: Arnon
· Личное сообщение · #5

http://slil.ru/27806616
вот
но не уверен будет ли она так работать.
В общем смысл в том что это файлы-шаблоны при создании игры - жать "Создать" - Далее - Simple*** - Далее и тут уже начинаются шаблоны (вот те японские символы в файлах и хранятся), оттуда и исчезают. В большом файле "Простой экшен.gtd" строк больше должно быть.

Тааак. Кажется наткнулся ещё на интересную вещь.

В начале по адресу 0x6h два байта указывают размер файла в байтах.
Но и их изменение пока ничего не дало)



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 02 июля 2009 15:56 · Поправил: Модератор
· Личное сообщение · #6

Перенесено.




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 03 июля 2009 11:12
· Личное сообщение · #7

Arnon
запарился качать с этого слил'а.
Прога у меня не запускается. написана она на C#, а следовательно берёш NET.Reflector и изучаеш алгоритм работы с этими фаилами. всё самое интерестное в дллках.

-----
zzz




Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 июля 2009 12:58 · Поправил: Arnon
· Личное сообщение · #8

Такс, спасибо за очередную наводку, рефлектор есть, класс отвечающий за чтение шаблона нашёл. TemplateInfoData.

Вот он: http://paste.org.ru/?22pydi

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



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 июля 2009 20:25
· Личное сообщение · #9

Знаний хватило чтобы написать программку чтобы читал пару строк оттуда)
нужен класс для записи их...




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 03 июля 2009 23:01
· Личное сообщение · #10

Arnon
ну дак разобрался как длинна определяется? в чом проблемма тогда?

-----
zzz




Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 июля 2009 18:03 · Поправил: Arnon
· Личное сообщение · #11

проблема в том что читал я их как раз этими встроенными функциями в dll'ках, это легко. а функций для их записи там нет (или я не так пробовал...). я не программист, C# открыл впервые в жизни, потому и прошу тут помощи не думал что такая задачка для сдешнего контенгента окажется сложной...



Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 04 июля 2009 20:06
· Личное сообщение · #12

Arnon пишет:
не думал что такая задачка для сдешнего контенгента окажется сложной...

Ты ещё забыл подумать о том, что здешнему контингенту нафиг не надо что-то вместо тебя писать



Ранг: 1.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 июля 2009 20:40 · Поправил: Arnon
· Личное сообщение · #13

tihiy_grom, кто не хочет писать - я попросил подсказать и направить в нужное русло. пока ничего дельного так и не услышал. на остроумии далеко не уедешь.
а кто не может даже подсказать, зачем вообще заходить в эту тему да и в этот раздел?
ну да это уже флуд.


 eXeL@B —› Вопросы новичков —› Формат файла
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати