Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

Ссылки жестко закодированных строк
(1 чел.) (1) гость
  • Страница:
  • 1
  • 2
  • 3

ТЕМА: Ссылки жестко закодированных строк

Ссылки жестко закодированных строк 2 года, 10 мес. назад #96

  • Stanner
  • Вне сайта
  • Fresh Boarder
  • Постов: 7
  • Репутация: 0
Может, я чего-то не понимаю?
Взял утилиту Autoruns от SysInternals, создал проект с поиском жестко закодированных строк, строки нашлись, но у всех строк кол-во ссылок - 0, т.е. VA и RVA ссылок нет.
Но я точно знаю, что есть - в OgreGUI строки прекрасно заменяются на большие по размеру, и адреса ссылок там отображаются...
С TcpView - та же беда, только в ProcMon с нахождением адресов ссылок все в порядке.
До остальных утилит еще не добрался...

RE: Ссылки жестко закодированных строк 2 года, 10 мес. назад #97

  • Aleksey Golovin
  • Вне сайта
  • Administrator
  • Постов: 494
  • Репутация: 25
Radialix может находить ссылки только по таблице перемещения, которой, видимо, в этом файле нет. Для поиска всех ссылок необходимо использовать дизассемблер IDA и плагины к нему - см. FLASH-ролики: www.radialix.com/index.php?option=com_co...temid=64&lang=ru (см. ролики в русском разделе).
Последнее редактирование: 2 года, 10 мес. назад от Aleksey Golovin.

RE: Ссылки жестко закодированных строк 2 года, 9 мес. назад #138

  • VIPer
  • Вне сайта
  • Junior Boarder
  • Постов: 25
  • Репутация: 0
Пожалуйста, можете мне объяснить: почему некоторые строки хоть до бесконечности можно увеличить, а вот в некоторых перевод "срезается" при исполнении? Ссылки везде стоят (цифра 1, в некоторых случаях и 2, и 3 и т.п.).

RE: Ссылки жестко закодированных строк 2 года, 9 мес. назад #139

  • Aleksey Golovin
  • Вне сайта
  • Administrator
  • Постов: 494
  • Репутация: 25
Перевод срезается, если найдены не все ссылки. Для поиска ссылок необходимо использоать дизассемблер IDA. Пример поиска - см. FLASH-ролик www.radialix.com/ru/files2/search_references.html

RE: Ссылки жестко закодированных строк 2 года, 9 мес. назад #140

  • VIPer
  • Вне сайта
  • Junior Boarder
  • Постов: 25
  • Репутация: 0
Алексей, извините, что я у вас отнимаю время.
Я все выполнил согласно вашим инструкциям в роликах, но, к сожалению, проблема сохранилась.
Пожалуйста, если у вас есть время загрузите foobar2000 (размер: около 3 МБ, сайт: foobar2000.org), затем создайте проект с файлом foobar2000.exe и с помощью IDA найдите ссылки. После этого найдите через поиск в HARDCORE строку "Add Location..." (обратите внимание, что найдена одна ссылка), напишите "Добавить размещение..." и укажите кодовую страницу UTF-8. Запустите локализованный файл, затем пройдите в меню "File", и вы увидите "Добавит". Потом вы можете для примера найти строку Networking и напишите "Сетевая поддержка", далее запустите локализованный файл и пройдите в меню Library и выберите команду Configure, взгляните на дерево элементов. Там будет полностью написано "Сетевая поддержка".
Мне кажется, что здесь дохлый номер уже.
Помогите мне, пожалуйста!


Кстати, я нашел типографическую опечатку. При обновлении проекта выходит сообщение "Изменения, вносимые командой обновления ресурсов, не могут быть отменены .". Между словом "отменены" и точкой стоит пробел.

RE: Ссылки жестко закодированных строк 2 года, 9 мес. назад #141

  • Aleksey Golovin
  • Вне сайта
  • Administrator
  • Постов: 494
  • Репутация: 25
Посмотрел в дизассемблере. Укорачивание строки связано с тем, что в этой версии foobar в процедуру, устанавливающую надпись у пункта меню, передается длина строки:
push 0Fh
push offset aAddLocation___ ; "Add Location..."

В предыдущих версиях foobar передавалась -1. Поэтому строки начали обрезаться. Необходимо в каком-нибудь HEX-редакторе исправить длину. Размер поля длины - 1 байт. Попробуйте установить 255, возможно подойдет для всех строк. Если не заработает, то необходимо установить длину строки после перевода.

RE: Ссылки жестко закодированных строк 2 года, 9 мес. назад #142

  • VIPer
  • Вне сайта
  • Junior Boarder
  • Постов: 25
  • Репутация: 0
Я, конечно, более или менее разбираюсь в HEX, но как же в этой структуре можно задать длину строки?
Извините меня, что я уже не по сабжу задаю вопросы, а уже сугубо личные, просто вы профессионал в этом деле.

RE: Ссылки жестко закодированных строк 2 года, 9 мес. назад #143

  • Aleksey Golovin
  • Вне сайта
  • Administrator
  • Постов: 494
  • Репутация: 25
Например, так:
открываете в IDA View>Open subviews>Hex Dump
выделяете команду push 0Dh, в окне дампа подсвечиваются байты 6A OF. 6A - код команды push, OF - значение 15-длина строки, которое требуется изменить. Далее идут пять байт команды push offset aAddFolder___: первый байт код команды, следующие четыре - адрес строки.
открываете файл в Hex-редакторе и ищите в нем последовательность байт, которая соответствует этим командам.
меняете байт со значением OF.
Последнее редактирование: 2 года, 9 мес. назад от Aleksey Golovin.

RE: Ссылки жестко закодированных строк 2 года, 9 мес. назад #144

  • VIPer
  • Вне сайта
  • Junior Boarder
  • Постов: 25
  • Репутация: 0
Благодарю Вас, Алексей. Все получилось. Но вы сами понимаете, что такой метод локализации не дело. Во-первых, это очень долго. Во-вторых, неудобно, можно случайным образом через HEX испортить весь файл. В-третьих, с выходом новой версии придется все заново проделывать операцию.

Алексей, у вас нет таких мыслей, как автоматизировать этот процесс, т.е. длину любой строки можно изменить стандартными средствами Radialix?
Если вы такое сможете воплотить, то все приложения будут покорными Вашему редактору и у Вас будет самый лучший редактор строк "вне ресурсов", какой когда-либо сделанный.
А сейчас пока придется оставить временно проект "foobar2000". Я хотел просто под себя взять два популярных плеера: foobar2000 (неофициально; автор не хочет делать локализацию) и jetaudio (официально). Сейчас у меня из плееров только один уже действующие и официально локализуемый мною - Winamp (ru.winamp.com), хотелось бы и другие перевести.
Если вы сможете реализовать, то это просто будет замечательно!

RE: Ссылки жестко закодированных строк 2 года, 9 мес. назад #145

  • Aleksey Golovin
  • Вне сайта
  • Administrator
  • Постов: 494
  • Репутация: 25
100-процентного решения этой проблемы нет. Длина строки меняется из кода, а он может быть произвольным и меняться от версии к версии локализуемого приложения. Частично эту проблему можно было бы решить за счет реализации поддержки скриптов. Т.е., например, емеется некоторый скрипт, который автоматически вызывается при создании локализованного файла, ищет команды, устанавливающие длину и меняет значения длины. Такой скрипт будет работоспосбным, пока в новых версиях приложения будет использоваться те же самые команды, устанавливающие длину строк. Если команды изменяться, то придется корректировать скрипт.
Кстати, в IDA емеется поддержка скриптов и это, наверняка, можно было бы реализовать в нем. После создания локализованного файла загружаете его в IDA и запускаете скрипт, который корректирует значения длин. Но я в скриптах IDA не силен.
  • Страница:
  • 1
  • 2
  • 3
Время создания страницы: 0.23 секунд