Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизАналог db 0 dup(2000) Найти похожие ветки
← →
Виктор1111 (2006-10-20 15:41) [0]Как сделать сабж на дельфи?, т.е. чтобы в исполняемом файле после компиляции ьыла последовательность из 2000 "0"?
← →
Правильный Вася (2006-10-20 15:45) [1]const a:string = #0#0#0#0...
← →
Виктор1111 (2006-10-20 15:47) [2]ну это понятно, просто 2000 раз набивать нехочется, должно же быть что-то вроде макросов...
← →
MBo © (2006-10-20 15:58) [3]const
s10 = #0#0#0#0#0#0#0#0#0#0;
s100 = s10+s10+s10...
← →
guav © (2006-10-20 16:01) [4]const
A: array[0..2000-1] of AnsiChar = #0;
но это только для нулей
← →
DrPass © (2006-10-20 16:07) [5]FillChar
← →
Ketmar © (2006-10-20 16:09) [6]const, const... а линкер её всё равно выкинет. %-)
← →
Виктор1111 (2006-10-20 16:11) [7]нет, меня наверно не так поняли. Константа заполненная символами в самой программе мне не нужна. Мне нужна метка в исполняемом файле, чтобы другое приложении могло без проблем найти нужное место и записать туда массив данных общим размером в 2 килобайта... И нужно чтобы потом сама модифицированная программа могла получить доступ к записанным на место константы данным примерно таким образом...
copymemory(PChar(s10), @bts, sizeof(bts));
← →
Ketmar © (2006-10-20 16:13) [8]какие только извраты народ не придумывает, лишь бы не писать нормально...
← →
Виктор1111 (2006-10-20 16:14) [9]В ресурсы засовывать не хочу т.к. большая часть кода уже написана таким образом
← →
MBo © (2006-10-20 16:15) [10]Есть много методов межпроцессного обмена (IPC)
Memory-Mapped File, WM_COPYDATA, сокеты, пайпы и так далее..
← →
Виктор1111 (2006-10-20 16:18) [11]нет, это все не подходит. Скрипт на сайте перед выдачей исполняемого файла пользователю модифицирует его таким образом, чтобы можно было потом по копии файла узнать кому он принадлежит.
← →
Anatoly Podgoretsky © (2006-10-20 16:18) [12]Не поверишь, но это тот же DupeString
← →
Виктор1111 (2006-10-20 16:26) [13]Анатолий, и твой вариант не подходит. DupeString вызывается как процедура в уже скомпилированном варианте, мне же нужен аналог макропроцессора, чтобы он перед компиляцией модифицировал исходный код нужным образом.
← →
Сергей М. © (2006-10-20 16:31) [14]
> Виктор1111 (20.10.06 16:26) [13]
В Д7 нет макрос-механизма.
← →
Сергей М. © (2006-10-20 16:33) [15]
> Аналог db "0" dup(2000)
В секции инициализированных данных ?
Запросто:
some_identifier: array[0..1999] fo Byte;
← →
Сергей М. © (2006-10-20 16:35) [16]
> метка в исполняемом файле
В исп.файле нет никаких "меток".
← →
DrPass © (2006-10-20 16:40) [17]
> Виктор1111 (20.10.06 16:26) [13]
Все глобальные переменные инициализируются нулями. Так что просто объяви массив. Непонятно только, зачем тебе это надо в исполняемом файле. Записать туда что-то сторонней программой?
← →
Виктор1111 (2006-10-20 16:47) [18]> DrPass © (20.10.06 16:40) [17]
Да, нужно записать на это место жругой массив. И нулями заполненный массив не подходит, потому что я его найти не могу, поэтому хочелось бы чтобы он был характерный...
З.Ы. Все, вроде разобрался. Буду делать примерно такuses Windows;
const
some_identifier: array[0..51999] of Char = "55567";
begin
MessageBoxA(0, some_identifier, "", 0);
end.
Т.е. массив нужны идентифицировать по строке 55567, а дальше со всеми sizeof(some_identifier) буду делать что захочу...
← →
Сергей М. © (2006-10-20 16:50) [19]
> Виктор1111 (20.10.06 16:18) [11]
На то есть BeginUpdateResource+UpdateResource+EndUpdateResoure.
← →
Сергей М. © (2006-10-20 16:53) [20]
> Виктор1111 (20.10.06 16:47) [18]
Мы легких (документированных !) путей не ищем ?
Нам надо через решение ж. ?)
Есть же ресурсы PE-модуля !
Для работы с ними у MS есть все что надо: и поиск по идентификатору, и чтение, и запись одним вмахом "волшебной палочки" ..
См. [19]
← →
guav © (2006-10-20 16:57) [21]> [7] Виктор1111 (20.10.06 16:11)
const
A: array[0..2000-1] of AnsiChar = "The Label";
initialization
ZeroMemory(@A, 0); // это ничего не делает,
// это чтоб линкер не выкинул
end.
метка "The Label" и 1991 нулей после неё попадут в ехешник. но такие вещи правильно через ресурсы делать
← →
Johnmen © (2006-10-20 17:03) [22]
> записать туда массив данных общим размером в 2 килобайта.
> последовательность из 2000 "0"
> some_identifier: array[0..51999] of Char = "55567";
:)))
← →
Виктор1111 (2006-10-20 17:24) [23]> Johnmen © (20.10.06 17:03) [22]
я говорил примерно а не в точных цифрах. На деле мне нужно 24008 байт...
> guav & Сергей М
В программу будет писать скрипт на PHP. В ПХП, на сколько мне известно, нет функций для модификации ресурсов PE файлов. Поэтому я вполне логично выбрал такой путь решения проблемы...
← →
Ketmar © (2006-10-20 17:36) [24]>[11] Виктор1111 20-Oct-2006, 16:18
>нет, это все не подходит. Скрипт на сайте перед выдачей
>исполняемого файла пользователю модифицирует его таким
>образом, чтобы можно было потом по копии файла узнать кому
>он принадлежит.
а не пробовал файлы лицензий использовать для этой цели? ну зачем всё делать через задний проход, а?
← →
90210 (2006-10-20 22:12) [25]Я конечно полный лох, но может тебе копат в этом направлении
begin
asm
jmp @_end
db "delphimaster.ru" // маркер
db 0, 0, 0 ,0, 0, 0, 0, 0 // .... ересь
@_end:
end;
ShowMessage("iam here!");
Подобные вопросы можно найти а Анти Крековые Мучения, или в подобных статьях.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.048 c