Основные форумы > RusMe - РусМи!

Смещение строк при переводе

<< < (2/4) > >>

миха04:
Ещё один момент, в окне Find Similar, это раздел Measurements, есть строка Make selection to find similar events. Она длиной 37 байт, кириллица занимает примерно 39 байт и дальше обрез. Пытался воспользоваться примером выше, но неудачно. В этом случае где находится счётчик?

миха04:
Разобрался, смотрел не туда   :umnik:

leserg73:

--- Цитата: миха04 от 28 Апреля 2020, 11:11:11 ---Она длиной 37 байт, кириллица занимает примерно 39 байт и дальше обрез. В этом случае где находится счётчик?
--- Конец цитаты ---
В отладчике все значения представлены в шестнадцатеричном формате!  37 в десятичном формате, а в шестнадцатеричном - 25.  :yes:

Памятка, если не знаете:



--- Цитата: миха04 от 28 Апреля 2020, 15:22:27 ---Разобрался, смотрел не туда
--- Конец цитаты ---
Это хорошо, что сами разобрались.  :up:

миха04:
Странная вещь происходит в отладчике x64dbg. 64-битная версия отказывается сохранять изменения при добавлении строки на новый адрес. Места ещё много. На скрине сохранился 1 байт из 37 изменённых. Пробовал в WinHex, всё сохраняется, но отладчик x64dbg это сохранение видит лишь небольшим куском. Файл ограничен по размеру?

leserg73:

--- Цитата: миха04 от 29 Апреля 2020, 12:54:05 ---Места ещё много. На скрине сохранился 1 байт из 37 изменённых. Пробовал в WinHex, всё сохраняется, но отладчик x64dbg это сохранение видит лишь небольшим куском. Файл ограничен по размеру?
--- Конец цитаты ---
Вы ошибаетесь. Там где вы пытаетесь записать свои данные, места как раз-то уже и нет. Если вы перейдете по тому адресу в НЕХ редактор, то увидите, что пытаетесь записать свои данные поверх существующих. В характеристиках секций любого РЕ-файла определены виртуальные границы, куда будут спроецированы данные программы при загрузке её в память. Вот отладчик вам и показывает виртуальную область памяти с кучей пустого места. На самом деле, на физическом уровне, этого пустого места в файле нет. Вы можете сами в этом удостовериться.

Вот смотрите, берем адрес 00000001421289FA,  с которого у вас отладчик отказывается записывать данные патча. Обратите внимание на информационную область под окном дизассемблированного кода. Там отображается физическое смещение в файле по выбранному адресу. Это смещение - 2126BFA.



Переходим по этому смещению в НЕХ редактор, открыв в нем файла программы. Что вы видите?



Вы находитесь уже перед началом следующей секции в файле. Это секция .data, которая начинается со смещения 2126C00.



Обратите внимание на параметры секций "Raw Size" (физический размер) и "Virtual Size" (виртуальный размер). Виртуальный размер обычно всегда больше. Это тот размер, который вы видите в отладчике.

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



Вот поэтому отладчик отбрасывает байты, которые выходят за границы физического размера секции. Или вы хотите получить заведомо неработоспособный файл программы?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии