Добавить / редактировать строку в скомпилированной программе C?

У меня странный вопрос, мне интересно, есть ли способ добавить / отредактировать строку (или что-то, что может быть доступно через программу C (внутри, то есть не внешний файл)) после того, как она была скомпилирована?

Цель состоит в том, чтобы изменить URL-адрес в программе Windows через PHP в Linux (очевидно, я не могу просто скомпилировать его).

0

Решение

Многие платформы posix поставляются с программой strings который будет читать двоичный файл в поисках строк. Существует возможность распечатать смещение строк. Например:

strings -td myexec

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

1

Другие решения

Шестнадцатеричный редактор — это, вероятно, ваш лучший выбор.

1

Будет работать шестнадцатеричный редактор, но вы должны быть осторожны, чтобы не изменить размер исполняемого файла. Если строка находится в файле .res, вы можете использовать ResEdit.

1

Существуют специализированные инструменты для изменения существующих исполняемых файлов. Известный инструмент
Resource Tuner, который может быть использован для редактирования всех видов ресурсов в исполняемом файле.

Другой вариант — использовать текстовый редактор, например Мастерская Hex, редактировать символы в строках исполняемого файла. Однако имейте в виду, что с помощью этого метода вы можете редактировать только существующие строки в исполняемом файле, а длина замещаемых строк должна быть равной или меньшей длины, чем исходные, в противном случае вы в конечном итоге измените исполняемый код.

1

Как предлагали другие, вы можете использовать редактор двоичных файлов (hex Editor), чтобы изменить строку в исполняемом файле. Вы захотите встроить в строку маркер (уникальную последовательность байтов), чтобы найти строку в своем файле. И вы захотите убедиться, что вы читаете / пишете файл с правильными смещениями.

Поскольку OP заявил, что планирует использовать PHP на linux для перезаписи файла, вам нужно будет использовать fseek, чтобы поместить указатель файла в начальное положение этой строки URL-адреса, убедиться, что вы остаетесь в пределах размера строки при замене байтов, а затем используйте fseek / rewind и fwrite, чтобы изменить файл.

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

Как предлагали некоторые авторы, вам может понадобиться пересчитать контрольную сумму или заново подписать двоичный файл. Быстрый способ проверить это — скомпилировать две версии вашего двоичного файла с разными значениями URL. Затем сравните файлы и посмотрите, есть ли различия, кроме значений URL.

1

Нет, если вы не хотите копаться в сгенерированном шестнадцатеричном или ассемблерном коде.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector