Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Аналог 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.093 c
1-1159164853
Nastina
2006-09-25 10:14
2006.11.05
DblClick по загловку TStringGrid


3-1157457438
parovoZZ
2006-09-05 15:57
2006.11.05
Создание папки в древесной структуре


3-1157457783
.ruslan
2006-09-05 16:03
2006.11.05
пустая строка в DBGrid


1-1159116369
degeneration
2006-09-24 20:46
2006.11.05
drag and drop из icq


2-1161145215
ДьяволСД
2006-10-18 08:20
2006.11.05
gdiPlus.dll