Как в hex редакторе найти строку
Перейти к содержимому

Как в hex редакторе найти строку

  • автор:

Как заменить строку в exe через hex editor?

Открыть файл, найти строку, заменить, сохранить.
Возможность изменить длину зависит от многих факторов: компилера, линкера, удачи.

Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать

Как описано выше, более короткую строку сделать без проблем. Чтобы сделать строку длиннее исходной нужно подыскать свободное место в файле, заполненное нулями (обычно это бывает в конце сегмента), вписать туда нужный текст, а затем изменить адрес вызова строки на новый (нужен HEX-редактор с дизассемблером и минимальные понятия об ассемблерных мнемокодах).

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Saboteur @saboteur_kiev Куратор тега Программирование
software engineer

Берете хекс эдитор, открываете файл, редактируете.
Строку другой длины в 90% случаев вставить не выйдет, поскольку чаще всего в коде сперва идут данные, а затем код. При вставке данных, в коде все ссылки полетят.

Вставить строку короче — выйдет, не забудьте проставить 00 в конце строки.

Ответ написан более трёх лет назад
Нравится 1 2 комментария
Владимир Мартьянов @vilgeforce

Глупости говорите: секция кода как правило идет перед секцией данных. И к замене строки на более длинную это не имеет никакого отношения: адреса идущих после данных точно так же съедут, как и адреса кода.
Нулевой байт спасет только если там была ASCIIZ-строка. Для юникода, дельфи-паскаля и MSDOS все будет иначе.

Saboteur @saboteur_kiev Куратор тега Программирование

В разных языках по-разному компилируется. В .com да, в .exe совершенно по разномубывает. И где я указал что можно вставить более длинную строку?

Руководство по hex-редакторам

Иногда возникает необходимость внести изменения в двоичный файл. Для этого используются так называемые hex-редакторы. Цель данного руководства — описать основные методы работы с ними и ответить на наиболее часто задаваемые вопросы.

  • 1 Выбор редактора
  • 2 Простейшее редактирование
  • 3 Поиск и замена
  • 4 Создание и использование crack-файлов
  • 5 Работа с блоками
  • 6 Ассемблирование и ассемблерный поиск
  • 7 Дополнительные функции

Выбор редактора

Qview pic1.png

Qview pic2.png

Самым первым обычно возникает вопрос: какой редактор из всего многообразия существующих выбрать. Для изменения нескольких байт можно cмело использовать любой, но при частом или длительном использовании программа должна поддерживать все требуемые функции, быть удобной, быстрой и надежной. Исходя из этого можно рекомендовать к использованию, например, QView. Кроме перечисленных выше cвойств, он обладает следующими:

  • Работает в DOS и Windows
  • Содержит встроенные ассемблер и дизассемблер
  • Поддерживает кодировки текста DOS-866, Win-1251, KOI-8r и определяемые пользователем
  • Имеет широкие возможности настройки
  • Является бесплатным с открытыми исходными кодами

Основное окно QView состоит из заголовка (вверху), рабочей области и панели функциональных клавиш (внизу). Для управления используются клавиатура и мышь. QView позволяет работать с данными в текстовом режиме, режиме шестнадцатеричного дампа и режиме дизассемблера. Режимы последовательно переключаются нажатием Enter или F4 (или щелчком левой кнопки мыши по заголовку в области расположения символов AV/HV/00). Режимы просмотра и редактирования переключаются нажатием Alt-F3 (в текстовом режиме — просто F3). Устанавливаемые после запуска режимы зависят от настроек, которые хранятся в файлах qview.ini, qview.fmg, qview.ehl и для изменения которых в составе пакета есть специальная программа — Q-Setup. Контекстная справка по используемым клавишам вызывается нажатием F1.

Открыть файл в редакторе можно передав его имя в качестве параметра командной строки: qview.exe (в Windows длинные имена файлов необходимо заключать в двойные кавычки) либо через файловую панель, которая вызывается нажатием Alt-F6 или щелчком мыши по имени файла в заголовке. Для выхода из редактора следует нажать Escape.

Простейшее редактирование

Самая простая задача при редактировании двоичных файлов: заменить значение байта по смещению XXXXХХХХ значением YY. Для этого после открытия файла в редакторе необходимо нажатием Enter переключить вид в режим дампа. В рабочей области в левой колонке указано значение смещения, в центральной части — значения байт в шестнадцатеричном виде, справа — те же значения в виде символов ASCII.

Для установки курсора по требуемому смещению требуется нажать клавишу F5 (или щелкнуть в заголовке мышью по ряду цифр, выделенному красным цветом), ввести значение смещения и нажать Enter. Если режим редактирования не был включен, то следует нажать Alt-F3 (при этом в панели клавиш появится надпись «Edit ON»). После этого можно вносить изменения в файл, набирая значения байт в шестнадцатеричном виде или, переместив курсор в правую колонку нажатием TAB, в виде символов. Курсор позиционируется с помощью обычных клавиш управления или мышью.

Для отмены сделанных изменений cледует установить курсор в месте ошибки и несколько раз нажать F3. Сохранить изменения можно при выходе, нажав W, или принудительно, нажав Alt-F9.

Поиск и замена

Qview pic3.png

QView поддерживает поиск в файле определенных байт или строк и поиск по маске. Диалоговое окно поиска вызывается нажатием F7. В поле ASCII можно ввести строку в виде символов, а в поле HEX — в шестнадцатеричном виде. Щелчком мыши можно указать направление поиска («Forward/Backward»), включить опции различения регистра символов для символьного поиска («Sensitive») или поиск по маске («Masking»). В последнем случае символ ‘?’ маскирует соответствующий байт в строке. Например, при поиске «w?r?» будут найдены слова worm, warm, were и т.п. При нажатии Shift-F7 выполняется поиск следующего совпадения.

Для выполнения поиска с заменой необходимо нажать Ctrl-F7. В верхней части окна вводится строка или шаблон для поиска, в нижней — заменяющая строка.

Создание и использование crack-файлов

Crack-файлы являются самым распространенным способом записи изменений в двоичных файлах. В стандартном формате они состоят из трех колонок: смещения относительно начала редактируемого файла, значения байта до изменения и его значения после изменения:

00000150: 89 B8 00000151: 1E 03 00000152: F6 00 00000153: 10 CD 00000154: 83 10

Иногда в начало добавляется комментарий, начинающийся с символа ‘#’.

В QView для сохранения внесенных в файл изменений в виде crack-файла необходимо нажать Shift-F9, ввести в открывшемся окне имя файла и нажать Enter. Для внесения изменений из готового crack-файла cледует нажать Ctrl-F8, пропустить открывшемся окно, нажав Enter (в нем можно задать дополнительное смещение, что используется редко), в следующем окне ввести имя crack-файла и снова нажать Enter. Важное замечание: сразу после этого изменения будут записаны в файл и он будет автоматически сохранен. Переключать программу в режим редактирования не обязательно. Если при внесении изменений выводится сообщение об ошибке, значит, либо формат файла не соответствует стандартному, либо патч не подходит к файлу (байты «до изменения» не совпадают).

Работа с блоками

Qview pic4.png

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

Для сохранения блока в файл необходимо нажать Shift-F2, в появившемся окне указать имя и формат сохраняемого файла (в виде кода — «как есть», дампа или ассемблерного текста) и нажать Enter.

При вставке блока из файла следует аналогичным образом выделить блок, нажать Shift-F3 и в открывшемся окне указать имя файла-источника. При этом размер выделенного блока должен быть равен или меньше размера файла. Альтернативный вариант: установить курсор в позицию, начиная с которой должна быть произведена вставка, нажать Shift-F5 и в открывшемся окне указать имя файла-источника, смещение и длину блока внутри него, откуда требуется взять данные.

Чтобы удалить блок следует отметить его и нажать Shift-F4 или установить курсор в нужную позицию, нажать Ctrl-F5 и указать число удаляемых байт. Для вставки заполненного нулями блока в текущую позицию cледует нажать Ctrl-F4 и указать размер блока. Удалить файла до конца начиная с текущей позиции можно нажав Alt-F10.

При вставке блока, как и в случае с crack-Файлами, изменения сохраняются cразу после внесения.

Ассемблирование и ассемблерный поиск

Qview pic5.png

Ассемблирование используется для внесения изменений в алгоритм работы исполнимых файлов. QView поддерживает все команды процессоров Intel 486 и 487. В режиме ассемблера и дизассемблера в рабочей области редактора в первой колонке указано смещение относительно начала файла, во второй — байты инструкции, в третьей — ee мнемоническое обозначение. Для включения режима ассемблирования следует перевести редактор в режим дизассемблера, нажав несколько раз Enter, включить режим редактирования, нажав Alt-F3, и нажать TAB для перемещения курсора в третью колонку. После этого можно вводить инструкции, завершая ввод каждой нажатием Enter.

При необходимости можно, как и в режиме дампа, изменять непосредственно байты во второй колонке. Разрядность кода 16/32 переключается нажатием F2. Отменить изменения можно установив курсор на строку с ошибкой и несколько раз нажав F3.

Для поиска конкретных ассемблерных инструкций следует нажать F6, ввести инструкцию и нажать Enter. Поиск следующего совпадения производится нажатием Shift-F6. Для поиска по шаблону можно использовать следующие специальные символы:

‘?’ — любой один символ
‘*’ — любая подстрока до запятой или до конца строки
‘$’ — поиск числовых констант (ставится перед числом)
‘%’ — пропуск одного слова
‘@’ — любая подстрока

Например, «sub bx,*» — поиск всех инструкций вычитания из регистра BX.

Дополнительные функции

Из полезных дополнительных функций QView можно отметить наличие встроенного калькулятора, который вызывается при нажатии Ctrl-F6. Он поддерживает основные арифметические и логические поразрядные операции, скобки для указания приоритета операций, ввод аргументов и вывод результата в системах счисления с основанием 2, 8, 10, 16.

Просмотреть информацию из заголовка исполнимого файла можно нажав F8 в режиме дампа или дизассемблера. Поддерживаются файлы форматов MZ, PE, NE, LX, LE.

Первые шаги с редактором FlexHex

Открывать файлы в FlexHex вы можете не только с помощью команды меню File — Open, но и прямо из контекстного меню Проводника или перетаскивая файлы мышью из Проводника на окно редактора FlexHex.

Содержимое каждого открытого файла будет представлено в главном окне редактора в трёх вариантах одновременно: в основной Hex панели и в двух вспомогательных, ANSI и UNICODE панелях. Поместив курсор на выбранный байт, можете начинать редактирование. Все изменения, которые вы сделаете, записываются в список отмены Undo, и вы всегда можете вернуться на любое количество шагов назад и отменить любое изменение.

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

FlexHex поддерживает любые drag and drop операции. Достаточно выделить блок данных, чтобы затем перетащить его в другое место файла или даже в окно другого приложения.

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

Отслеживание изменений по карте файла

Карта файла отображает позиции и размеры областей файла. Она является графическим представлением данных из панели навигации Area Pane и появляется только для существующих физически на диске файлов (или после первого сохранения данных в файл).

Область (Area) — это блок данных, появившихся в результате операции редактирования. Вначале, когда файл только был открыт, он состоит из одной единственной области оригинальных данных. Изменение одного байта в середине файла приведёт к появлению на карте трёх областей: оригинальные данные перед изменённым байтом, затем модифицированная область размером в 1 байт, и опять область оригинальных данных до конца файла.

Теперь переключим редактор в режим вставки данных (текущий режим отображается внизу окна, в строке состояния), встанем на адрес 00000004 (прямо перед байтом 44) и введём с клавиатуры F0. Эта операция вставит байт F0 в файл, сдвинув остальные данные вниз. Карта файла немедленно отобразит этот сдвиг:

В панели навигации Area Pane так же отображается история произведенных операций с областями файла. В панели Stream показываются операции с потоками и все области потоков.

Щелчок по адресу в колонке Start переместит курсор на начало соответствующей области файла. Щелчок по размеру области в колонке Size приведёт к выделению всей соответствующей области. Если область была сдвинута, щелчок в колонке Shift передвинет курсор в позицию, занимаемую областью до сдвига.

Отслеживание изменений «по горячим следам» (Hot Tracking)

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

Специальная функция Hot Tracking позволяет отслеживать изменения, вносимые в файл другим приложением. Используя функцию слежения, не нужно больше переоткрывать файл снова и снова, чтобы заметить изменения — FlexHex обнаруживает изменения в открытом файле и мгновенно обновляет окно просмотра. Эта функция включается автоматически для любого файла, открытого в режиме read-only.

Индикаторы в строке состояния

Строка состояния FlexHex содержит ряд индикаторов:

Индикатор прогресса

Показывает ход выполнения задачи при выполнении длительной операции.

Индикатор размера выделенной области/потока данных

Если есть активное выделение, этот индикатор показывает размер выделенной области. Если нет выделенных данных, индикатор показывает размер редактируемого потока данных (т.е. файла или диска).

Индикатор сдвига

В режиме вставки (INSERT mode) удаление или ввод данных сдвигает остальной поток вверх или вниз. Эта операция с большей долей вероятности испортит данные на логическом или физическом диске; в исполняемых и многих других типах файлов данные тоже жёстко привязаны к позициям в файле, и подобный сдвиг приведёт к их неработоспособности. Индикатор сдвига показывает предупреждающий знак, если часть оригинального потока изменила своё положение в файле в результате редактирования.

Все данные находятся на своих местах.

Один или несколько блоков данных были сдвинуты относительно оригинальных позиций.

Индикатор разреженности (Sparse)

Неактивный индикатор (как показано на скриншоте выше) означает, что поток не имеет разреженных областей. При редактировании заблокированного системой файла с очень маленьким размером (100 байт или меньше) в этом поле появится индикатор RESIDENT . Это означает, что NTFS поместила все данные файла в запись MFT, и ни один байт файла не занимает место на диске.

Индикатор изменений

Здесь возможны три состояния: UNCHANGED (без изменений), MODIFIED (внесены изменения) и READ-ONLY (открыто только для чтения, изменения невозможны).

Режим вставки (INSERT Mode)

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

Переключение режимов Insert/Overwrite осуществляется нажатием кнопки INSERT на клавиатуре.

Настройки

Команда меню Tools / Settings вызывает диалог настроек программы.

Диалог настроек программы Hex Editor

Команда меню Tools / Customize вызывает диалог настроек внешнего вида интерфейса FlexHex, горячих клавиш и других пользовательских предпочтений.

Настройка внешнего вида FlexHex

Скачайте бесплатную ознакомительную версию!

FlexHex работает на Windows 2000/XP/2003/Vista/7/8/10

Минимальные системные требования:
Процессор Intel Pentium® или AMD K5 166 MHz
16 MB RAM

Copyright © 2023 Heaventools Software. Все права сохранены.

Как в Hex редакторе найти все данные в файле которые обращаются к одному смещению?

Подскажите как в Hex редакторе найти все данные в файле которые обращаются к одному смещению?

Допустим я знаю нужное мне смещение в файле, например: 639952 или 9c3d0, как по этому смещению определить все данные которые имеют это смещение?

  • Вопрос задан более двух лет назад
  • 370 просмотров

Комментировать
Решения вопроса 1

15432

Системный программист ^_^

Если это исполняемый файл, то здесь вам помогут дизассемблеры, например, IDA Pro.
В общем случае — например, поискать это число в виде набора данных (я бы искал последовательность байт «D0 C3′), но если ссылка будет относительной, или кодирование данных имеет особый формат, такой поиск не поможет, и потребуется детальное изучение форматов структур и писать некоторые скрипты для автоматизации поиска

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *