Помощь при русификации

Тема в разделе "WASM.BEGINNERS", создана пользователем neo4511, 29 ноя 2008.

  1. neo4511

    neo4511 New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    10
    Я пишу ру-р программу (http://ifolder.ru/9285619) 800 kB Возникла такая поблема эсли я хочу перевести слово например из 7 знаков (Entropy) как Энтропия (8 знаков) то при запуске программы все слова путаются. Для редактирования использую FlexHEX. Подскажите как этого избежать? Или например в данном случае больше 7 знаков менять нельзя?
    Заранее огромное спасибо.
     
  2. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    neo4511
    разумеется, больше 7 нельзя (на самом деле 8, с учетом конца строки '\0'). Программа обращается к строкам непосредственно по их адресам, эти адреса "вшиты" в код.
     
  3. neo4511

    neo4511 New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    10
    Получается ни как нельзя скажем Entropy перевести как Энтропия, бес путаницы слов? Может есть какой-нибудь способ?
     
  4. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    neo4511
    если строка в ресурсах, то можно измениь любым редактором ресурсов. Если строки просто в секции данных, то не получится. Хотя можно, конечно, найти где нибудь место, записать туда строку "Энтропия", а потом найти в коде все места, где идет обращение к строке "Entropy" и поменять адрес.
     
  5. neo4511

    neo4511 New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    10
    meduza
    Глянь прогу, она 16 битная 1995 года и все редакторы ресурсов её не видят, я даже не знаю на чём она написана. Может подскажешь прогу которой можно было бы её расковырять?
     
  6. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    neo4511
    в hex-редакторе. И укладываться в длину исходной строки.
     
  7. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Если есть релоки в файле, можно все легко исправить
     
  8. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    neo4511
    2ce40h: Borland Delphi Portions Copyright (c) 1983,95 Borland

    древний W32dasm её дизассемблирует, правда самые интесные строки не находит, так что придётся прыгать между дизассемблированным листингом и hex редактором ;)
    В hex редаторе находишь адрес строки, например 3462a: "Entropy",0, затем в дизассемблированом листинге
    :0001.26A7 B82A46 mov ax, 462A ; <- похоже это и есть младшая часть адреса этой строки
    :0001.26AA 8CDA mov dx, ds
    :0001.26AC C47E0A les di, [bp+0A]
    затем опять в hex редакторе этот код (B82A468CDA) расположен по адресу 38038, там правишь обращение к строке на свою и т.д.
    Но геморою будет....
     
  9. neo4511

    neo4511 New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    10
    Дауж.... Буду наверно всётаки укладываться в длину исходной строки
     
  10. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    neo4511
    IDA определяет, что программа написана на Delphi 1.0, что, в общем, правильно. Кстати, IDA довольно много информации сообщает об этом файле. Неприятность заключается в том, что программа под DOS (NE формат), поэтому большинство ссылок на строки или таблицы виртуальных методов нужно "создавать" руками (смещение+сегмент).
    Теперь про локализацию на русский. Поскольку часть строк Паскалевские, то нужно править байт длины, а не только саму строку. Часть строк - обычные, в них нужно оставить финальный 0.
    Но самое хреновое состоит в том, что в Дельфи большинство строк находится в кодовом сегменте, а значит пространства свободного там вряд-ли найдется. Т.е. можно уверенно править строки, длина которых меньше, а вот строки большей длины не получится.
     
  11. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    neo4511
    Для начала составь словарь соответствий английское слово -- русское слово. Там, где длина english word >= длине русского слова -- переводи без проблем с забивкой лишних символов пробелами; там, где длина english word < длины русского слова -- пишешь руское слово 8,'Энтропия',0 где-нибудь в конце области забитой нулями -- запускай Catt2 и убедись, что появление лишнего слова не привело к краху программы, возможно придется искать новое место. Каждый раз перед вставкой нового слова не забывай делать backup программы. Затем, через отладчик или через дизассемблер ищешь, где происходить обращение к адресу Entropy и подменяешь эти адреса. На то место, где стояло раньше слово 'Entropy' поставишь следующее 7 буквенное русское слово. А вот тут тутор про переводом http://pokeperevod.narod.ru/perevodhelp.htm может быть найдешь, что-нибудь ценное [​IMG]
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    crypto
    Только прога не под DOS, а под win16 (win 3.1, 3.11) - там тоже NE, но режим защищённый для 286 ;) если ничего не путаю отличается от DOS-овского тем что сегменты выстроены друг за другом без перекрытия и уже api вместо int-сервисов.
    Чистая DOS не дружила с dll и графическое окно в вин стиле, способное нормально работать в современной винде в DOS не получится.

    Кстати глянул TDW (отладчик для win 16) из комплекта tasm - он прогу открыл и даже отладочные символы просит :))
     
  13. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Y_Mur
    Ну да, ес-но, под win16, это я неправльно написал :) Тем более, что там формы создаются.
    Но суть-то в том, что русифицировать ее полноценно не получится. В 16-ричном редакторе, к сожалению, не увидишь, Паскалевская строка, или нет. Придется загружать файл в IDA и смотреть по каждой строке, что она собой представляет, есть ли место для изменения.
    ЗЫ
    Проще наверное программу полностью реверсить и переписать скажем на Билдере (чтобы формы перетащить). Тем более, что объем работы не шибко большой.
     
  14. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    А вот я, как раз, и начинал с локализации программ прежде, чем научился писать сам
     
  15. neo4511

    neo4511 New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2008
    Сообщения:
    10
    Ребята всем спасибо, очень помогли! Вобщем я основные моменты перевёл, а коечто оставил как есть. Это единственный форум где я получил нормальный ответ.
    Респект вам!