Перевод бинарных данных

Тема в разделе "WASM.BEGINNERS", создана пользователем Balaganov, 10 янв 2006.

  1. Balaganov

    Balaganov New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2006
    Сообщения:
    5
    Адрес:
    Russia
    Люди, помогите решить проблему!

    Вопрос, я подозреваю, простой, но не для меня.

    Взялся переводить прогу, а у неё часть интерфейса находится в бинарном виде не в коде (или данных), а в самих ресурсах. Открываю её в Hex Workshop, нахожу нужные записи. Замена "File" на "Файл" проблем не вызывает. Так же нет проблем, если исходный текст длинее переведённого. Проблемы начинаются, когда исходный текст короче, например "Cut" - как его, заразу, заменить на "Вырезать"? Мне посоветовали делать так:

    Вот нужная мне запись - "&Cut". Копирую четыре соседних символа, вставляю их в середину "&Cut". Т.е. получается - "&C....ut", и пишу поверх "Вырезать". Потом прописываю новое кол-во символов в строке - 08 (Знак перед амперсандом, типа большой буквы "Ять"). Сохраняю - файл падает, т.е. перестаёт запускаться. Извращался по разному, результат - полсотни убитых файлов (а может и больше). Гестапо отдыхает! И всё!

    Расскажите, в чём ошибка, кто знает! Желательно попроще, знаний в этом вопросе - минимум.
     
  2. Topor

    Topor New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    31
    А почему бы не воспользоваться специализированным софтом для работы с ресурсами ?

    PE Explorer, Restorator, ....., они умеют перекомпиливать ресурсы.
     
  3. Balaganov

    Balaganov New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2006
    Сообщения:
    5
    Адрес:
    Russia
    Я же написал - часть ресурсов находится в бинарном виде. А их, насколько я знаю, можно редактировать только в НЕХ-редакторах.
     
  4. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69
    Если эти строки прописаны в коде, то для каждой отведено соответствующее число байт. В редких случаях, каждой строчке выделяется масив определённого размера, но это явно не твой случай. Изменяя длинну строки, ты смещаешь все остальные адреса, и, естественно, всё падает. Длина должна совпадать и исходной, и ничего тут не поделаешь.

    Хотя можно например заменить Cut на Чик, Paste на Шлёп и т.д. Русский язык ведь такой богатый =)))
     
  5. Balaganov

    Balaganov New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2006
    Сообщения:
    5
    Адрес:
    Russia
    Да нет, это возможно. Я связался с одним спецом по части переводов, он мне кое-что рассказал и выслал в письме скриншот этой проги, переведённой им (частично). Т.е. выход есть. Я пытался делать по его рецепту, но вышло так, как я описал выше. Где-то я допускаю ошибку. Вопрос - где? А он намекнул мне, что у него нет времени заниматься моим просвещением, к сожалению.
     
  6. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    Все просто! Ищешь VA(RVA)-ссылки на нужный текст (Cut, Copy, Paste ect.), находишь свободное пространство (обычно в этой же секции, в конце), вбиваешь туда свой текст (Вырезать, Копировать, Вставить и т.д.) и изменяешь эти ссылки на свои.

    Если это сложно, то воспользуйся программой OgreGUI (скачать, где-то там), там этот процесс автоматизирован.
     
  7. Balaganov

    Balaganov New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2006
    Сообщения:
    5
    Адрес:
    Russia
    Ага, мерси, скачал, скачал, сейчас буду пробовать. Судя по описанию, это самое то!
     
  8. Balaganov

    Balaganov New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2006
    Сообщения:
    5
    Адрес:
    Russia
    Нет, не получается!DruID,может, разжуёшь?

    Справка в OgreGUI довольно скромная. Открывает она только *.exe-файлы, а поиск отсутствует, к сожалению. Файлы *.res, *.bin открывать не хочет, т.е. я не могу экспортировать нужный раздел, отредактировать и запихать назад. А где его найдешь в 3,5мб exe-файле, этот раздел.
     
  9. DruID

    DruID New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2005
    Сообщения:
    20
    Тебе необходимо выяснить формат файла который надо локализировать.

    Если это RES - то с вероятностью в 99% он будет открываться всякими редакторами ресурсов.

    EXE, DLL и остальные PE - тоже самое, кроме вшитых строк - для них OgreGUI или OverNimbl Localize Plus



    Если это какой-то "фирменный" формат, то нужно просто разобраться со структурой.



    У тебя возможно, кроме изменения длины строк, нужно также изменять длину сектора\секции в которой эти строки храняться, соответсвенно ссылки на другие сектора и т.д. Надо найти байты которые так или иначе связаны с размером строк, блоков\секций, других обьектов в этом файле и т.д. Поищи ответы на сайтах переводчиков.