Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.047 c
15-1160644299
Desdechado
2006-10-12 13:11
2006.11.05
Пара вопросов по VS 2005


2-1161541388
Officeman
2006-10-22 22:23
2006.11.05
ST := StringReplace(TOVAR, & , & , [frReplaceAll]); ???


4-1150985614
PRT
2006-06-22 18:13
2006.11.05
Popup в Run - time


15-1161004440
Berzercer
2006-10-16 17:14
2006.11.05
Как зайти на форум под своим именем?


15-1160651006
ProgRAMmer Dimonych
2006-10-12 15:03
2006.11.05
Корректировка свойств контролов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский