Я пишу ру-р программу (http://ifolder.ru/9285619) 800 kB Возникла такая поблема эсли я хочу перевести слово например из 7 знаков (Entropy) как Энтропия (8 знаков) то при запуске программы все слова путаются. Для редактирования использую FlexHEX. Подскажите как этого избежать? Или например в данном случае больше 7 знаков менять нельзя? Заранее огромное спасибо.
neo4511 разумеется, больше 7 нельзя (на самом деле 8, с учетом конца строки '\0'). Программа обращается к строкам непосредственно по их адресам, эти адреса "вшиты" в код.
Получается ни как нельзя скажем Entropy перевести как Энтропия, бес путаницы слов? Может есть какой-нибудь способ?
neo4511 если строка в ресурсах, то можно измениь любым редактором ресурсов. Если строки просто в секции данных, то не получится. Хотя можно, конечно, найти где нибудь место, записать туда строку "Энтропия", а потом найти в коде все места, где идет обращение к строке "Entropy" и поменять адрес.
meduza Глянь прогу, она 16 битная 1995 года и все редакторы ресурсов её не видят, я даже не знаю на чём она написана. Может подскажешь прогу которой можно было бы её расковырять?
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, там правишь обращение к строке на свою и т.д. Но геморою будет....
neo4511 IDA определяет, что программа написана на Delphi 1.0, что, в общем, правильно. Кстати, IDA довольно много информации сообщает об этом файле. Неприятность заключается в том, что программа под DOS (NE формат), поэтому большинство ссылок на строки или таблицы виртуальных методов нужно "создавать" руками (смещение+сегмент). Теперь про локализацию на русский. Поскольку часть строк Паскалевские, то нужно править байт длины, а не только саму строку. Часть строк - обычные, в них нужно оставить финальный 0. Но самое хреновое состоит в том, что в Дельфи большинство строк находится в кодовом сегменте, а значит пространства свободного там вряд-ли найдется. Т.е. можно уверенно править строки, длина которых меньше, а вот строки большей длины не получится.
neo4511 Для начала составь словарь соответствий английское слово -- русское слово. Там, где длина english word >= длине русского слова -- переводи без проблем с забивкой лишних символов пробелами; там, где длина english word < длины русского слова -- пишешь руское слово 8,'Энтропия',0 где-нибудь в конце области забитой нулями -- запускай Catt2 и убедись, что появление лишнего слова не привело к краху программы, возможно придется искать новое место. Каждый раз перед вставкой нового слова не забывай делать backup программы. Затем, через отладчик или через дизассемблер ищешь, где происходить обращение к адресу Entropy и подменяешь эти адреса. На то место, где стояло раньше слово 'Entropy' поставишь следующее 7 буквенное русское слово. А вот тут тутор про переводом http://pokeperevod.narod.ru/perevodhelp.htm может быть найдешь, что-нибудь ценное
crypto Только прога не под DOS, а под win16 (win 3.1, 3.11) - там тоже NE, но режим защищённый для 286 если ничего не путаю отличается от DOS-овского тем что сегменты выстроены друг за другом без перекрытия и уже api вместо int-сервисов. Чистая DOS не дружила с dll и графическое окно в вин стиле, способное нормально работать в современной винде в DOS не получится. Кстати глянул TDW (отладчик для win 16) из комплекта tasm - он прогу открыл и даже отладочные символы просит )
Y_Mur Ну да, ес-но, под win16, это я неправльно написал Тем более, что там формы создаются. Но суть-то в том, что русифицировать ее полноценно не получится. В 16-ричном редакторе, к сожалению, не увидишь, Паскалевская строка, или нет. Придется загружать файл в IDA и смотреть по каждой строке, что она собой представляет, есть ли место для изменения. ЗЫ Проще наверное программу полностью реверсить и переписать скажем на Билдере (чтобы формы перетащить). Тем более, что объем работы не шибко большой.
Ребята всем спасибо, очень помогли! Вобщем я основные моменты перевёл, а коечто оставил как есть. Это единственный форум где я получил нормальный ответ. Респект вам!