Изменение констант в приложении.....
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Изменение констант в приложении..... - 2010-07-26 22:03:40.466666
|
|
|
Cannibal666
Сообщений: 59
Оценки: 0
Присоединился: 2007-01-09 19:18:48.060000
|
Привет всем…вопрос может показаться глуповатым для кого то..но все же прошу помощи, так чисто ради интереса на такую тему пишу…допустим есть скомпиленый на делфи файл, в нем указанна определенная константа, с каким то значением ..так вот каким образом значение этой константы можно изменить не прибегая к перекомпиляции, я имею ввиду создать еще одно приложение, которое смогло бы менять какие либо параметры другой программы…или может есть у кого исходники на данную тему…
|
|
|
RE: Изменение констант в приложении..... - 2010-07-27 01:16:33.846666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Создавать ничего не надо. Уже всё изобретено. Называется HEX-редактор. Только надо быть осторожно со строковыми константами - нельзя менять их длину.
|
|
|
RE: Изменение констант в приложении..... - 2010-07-27 01:22:02.600000
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
VirtualProtect с параметрами READ | WRITE
|
|
|
RE: Изменение констант в приложении..... - 2010-07-27 10:16:38.796666
|
|
|
Fairhawk
Сообщений: 102
Оценки: 0
Присоединился: 2010-05-25 21:10:59.193333
|
ищешь через hex редатор эту константу, если надо, то сразу изменяешь ее там, либо запоминаешь ее адрес, после чего: const
msg = hello_world// чем будем заменять.
var
FS: TFileStream;
begin
FS:=TFileStream.Create('C:\proga.exe', fmOpenReadWrite);
FS.position:= 0x11111; // адрес константы.
FS.Write(msg, 10); // 10, число заменяемых байт.
FS.Free;
end; Самый просто вариант
|
|
|
RE: Изменение констант в приложении..... - 2010-07-27 12:15:47.750000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: Sunzer VirtualProtect с параметрами READ | WRITE А причём тут работа с памятью о_О ?
|
|
|
RE: Изменение констант в приложении..... - 2010-07-27 13:31:05.193333
|
|
|
Fairhawk
Сообщений: 102
Оценки: 0
Присоединился: 2010-05-25 21:10:59.193333
|
quote:
ORIGINAL: _SaZ_ quote:
ORIGINAL: Sunzer VirtualProtect с параметрами READ | WRITE А причём тут работа с памятью о_О ? угу, для этого SetFilePointer, и WriteFile нужны
|
|
|
RE: Изменение констант в приложении..... - 2010-07-27 14:39:09.313333
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
ORIGINAL: _SaZ_ quote:
ORIGINAL: Sunzer VirtualProtect с параметрами READ | WRITE А причём тут работа с памятью о_О ? Вопрос ТС'а не понял, думал во время исполнения программы нужно изменить константу. Константы находятся ведь в секции данных с атрибутами READ. А по сабжу, можно создать новую секцию, вписать туда нужные данные, и изменить указатель на них.
|
|
|
RE: Изменение констант в приложении..... - 2010-07-27 16:16:20.363333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
А ещё можно написать свой мегадизассемблер и компилятор, которые сначала разберут программу, потом поменяют константы и соберут её. Тут вариантов немного: 1. ТС хочет поменять лэйблы, копирайты и т.п. в чужой программе. Тогда - любым способом обычное редактирование файла (в т.ч. программно) 2. ТС хочет что-то компилировать в большом количестве, но с разными константами (например, липовыми почтовыми адресами) - тут тупо кодогенерация + билд скрипты.
|
|
|
|
|