Delphi изменение значений констант откомпилированного файла

Статус
В этой теме нельзя размещать новые ответы.

2pick

Постоялец
Регистрация
15 Мар 2009
Сообщения
102
Реакции
31
Подскажите как изменить значение констант в уже откомпилированном файле с помощью другой программы. Т.е. необходимо создать своего рода конфигуратор для готовой программы. Может где-то написано, но к сожалению я не нашел.
 
изменить значение констант в уже откомпилированном файле с помощью другой программы
Мне кажется - только дизасемлером. Мне кажется, для Делфи лутше DeDe.
А перекомпилировать проект не получится? а то с дизасемблером возится довольно хлопотно. Конечно, все зависит от сложности проекта.
 
Перекомпедировать то можно, но хочется чтобы пользователь программы сам задавал конфиги (именно в самой программе, не через реестр). Были такие конфигурационные программы (например трояны шли с 3-мя файлами: сервер,клиент и конфигуратор сервера и редактировалась именно откомпилированная программа)
 
Так в чем проблема? Храните в дополнительном файлике все необходимые настройки.
 
Думаю вам поможет в етом
модифицировать содержимое файлов, править код программ непосредственно в памяти и выполнять прочие подобные операции.
 
Можно хранить файлы настроики в отдельной (или основной базе) и настраивать основную программу через отдельную утилиту конфигурации. Основная программа при запуске будет считывать данные с этой базы.
Конечно такое можно быстренько организовать если прога своя и есть исходники.
 
Подскажите как изменить значение констант в уже откомпилированном файле с помощью другой программы. Т.е. необходимо создать своего рода конфигуратор для готовой программы. Может где-то написано, но к сожалению я не нашел.

У вас неопределенно описаны условия задачи. Возникает много уточняющих вопросов:

1) Что вы называете константой? Значение, описанное в программе как const var_name: type; или это некая неименованная константа в некоем цикле while (i < 1000) do begin... ? Сколько этих констант? Вы знаете местонахождение этих констант в exe/dll-файле или их еще надо там найти?
2) Откомпилированный файл свой или чужой? Исходники есть? (я уж не спрашиваю, почему не делается изменение констант с помощью самой программы, видимо, есть на то причины)

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

Код:
var cIntParameter: ShortString = 'imetka'#0#0#0#0;
function GetIntParameter: Integer;
var p: PByte;
begin
  p := @cIntParameter[1];
  Inc(p, 6);
  Result := PInteger(p)^;
end;

При обращении к параметру в программе используйте GetIntParametr();
С помощью другой программы можно найти в двоичном файле фразу 'imetka', за которой следует 4 байта, куда и надо поместить значение.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху