Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Аналог db '0' dup(2000) [D7]


Страницы:   1 2

Виктор1111 ©   (2006-10-20 15:41:00) 

Как сделать сабж на дельфи?, т.е. чтобы в исполняемом файле после компиляции ьыла последовательность из 2000 '0'?


90210   (2006-10-20 22:12:00) [1]

Я конечно полный лох, но может тебе копат в этом направлении

begin
asm
 jmp @_end
 db 'delphimaster.ru' // маркер
 db 0, 0, 0 ,0, 0, 0, 0, 0 // .... ересь
 @_end:
end;
 ShowMessage('iam here!');


Подобные вопросы можно найти а Анти Крековые Мучения, или в подобных статьях.


Ketmar   (2006-10-20 17:36:00) [2]

>[11] Виктор1111 20-Oct-2006, 16:18
>нет, это все не подходит. Скрипт на сайте перед выдачей
>исполняемого файла пользователю модифицирует его таким
>образом, чтобы можно было потом по копии файла узнать кому
>он принадлежит.
а не пробовал файлы лицензий использовать для этой цели? ну зачем всё делать через задний проход, а?


Виктор1111   (2006-10-20 17:24:00) [3]

> Johnmen ©   (20.10.06 17:03) [22]
 я говорил примерно а не в точных цифрах. На деле мне нужно 24008 байт...
> guav & Сергей М
 В программу будет писать скрипт на PHP. В ПХП, на сколько мне известно, нет функций для модификации ресурсов PE файлов. Поэтому я вполне логично выбрал такой путь решения проблемы...


Johnmen   (2006-10-20 17:03:00) [4]


> записать туда массив данных общим размером в 2 килобайта.



> последовательность из 2000 '0'



> some_identifier: array[0..51999] of Char = '55567';


:)))


guav   (2006-10-20 16:57:00) [5]

> [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 нулей после неё попадут в ехешник. но такие вещи правильно через ресурсы делать


Сергей М.   (2006-10-20 16:53:00) [6]


> Виктор1111   (20.10.06 16:47) [18]


Мы легких (документированных !) путей не ищем ?
Нам надо через решение ж. ?)

Есть же ресурсы PE-модуля !
Для  работы с ними у MS есть всечто надо: и поиск по идентификатору, и чтение, и запись одним вмахом "волшебной палочки" ..

См. [19]


Сергей М.   (2006-10-20 16:50:00) [7]


> Виктор1111   (20.10.06 16:18) [11]


На то есть BeginUpdateResource+UpdateResource+EndUpdateResoure.


Виктор1111   (2006-10-20 16:47:00) [8]

> 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) буду делать что захочу...


DrPass   (2006-10-20 16:40:00) [9]


> Виктор1111   (20.10.06 16:26) [13]

Все глобальные переменные инициализируются нулями. Так что просто объяви массив. Непонятно только, зачем тебе это надо в исполняемом файле. Записать туда что-то сторонней программой?


Сергей М.   (2006-10-20 16:35:00) [10]


> метка в исполняемом файле


В исп.файле нет никаких "меток".


Сергей М.   (2006-10-20 16:33:00) [11]


> Аналог db '0' dup(2000)


В секции инициализированных данных ?

Запросто:

some_identifier: array[0..1999] fo Byte;


Сергей М.   (2006-10-20 16:31:00) [12]


> Виктор1111   (20.10.06 16:26) [13]


В Д7 нет макрос-механизма.


Виктор1111   (2006-10-20 16:26:00) [13]

Анатолий, и твой вариант не подходит. DupeString вызывается как процедура в уже скомпилированном варианте, мне же нужен аналог макропроцессора, чтобы он перед компиляцией модифицировал исходный код нужным образом.


Anatoly Podgoretsky   (2006-10-20 16:18:00) [14]

Не поверишь, но это тот же DupeString


Виктор1111   (2006-10-20 16:18:00) [15]

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


MBo   (2006-10-20 16:15:00) [16]

Есть много методов межпроцессного обмена (IPC)
Memory-Mapped File, WM_COPYDATA, сокеты, пайпы и  так далее..


Виктор1111   (2006-10-20 16:14:00) [17]

В ресурсы засовывать не хочу т.к. большая часть кода уже написана таким образом


Ketmar   (2006-10-20 16:13:00) [18]

какие только извраты народ не придумывает, лишь бы не писать нормально...


Виктор1111   (2006-10-20 16:11:00) [19]

нет, меня наверно не так поняли. Константа заполненная символами в самой программе мне не нужна. Мне нужна метка в исполняемом файле, чтобы другое приложении могло без проблем найти нужное место и записать туда массив данных общим размером в 2 килобайта... И нужно чтобы потом сама модифицированная программа могла получить доступ к записанным на место константы данным примерно таким образом...

copymemory(PChar(s10), @bts, sizeof(bts));


Ketmar   (2006-10-20 16:09:00) [20]

const, const... а линкер её всё равно выкинет. %-)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо