Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компиляция delphi проекта и создание install'а online! Непростая задача по созданию персонализированного setup.exe. 
:(
    Опции темы
dsnake
Дата 25.7.2007, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.6.2007
Где: Красноярск

Репутация: нет
Всего: нет



Не знаю в какой раздел vingrada писать. smile Г.г. модераторы - если переместите, куда надо буду благодарен.
Короче задача в следующем: есть инсталляционный пакет программы, в exe файле которой зашит уникальный код (у каждой копии - свой!) т.к. копий и кодов много - компилировать каждый раз мануально слишком накладно. (окончание в следующем сообщении - пишу с телефона - ограничение на длину текста)
PM MAIL WWW   Вверх
_hunter
Дата 25.7.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



компилируй не мануально -- в чем проблема?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
dsnake
Дата 25.7.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.6.2007
Где: Красноярск

Репутация: нет
Всего: нет



Сообщение не дописал предыддущее. Задача в том, чтобы юзер по ссылке http://www.zlo.ru/satan.php?id=13 получал готовый ИНСТАЛЛЯЦИОННЫЙ пакет, внутри которого находится exe файл с измененной константой (const dev=13). Хостинг на freebsd. Т.е. дельфевый компилятор не пойдет...
PM MAIL WWW   Вверх
artemiy
Дата 25.7.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 22.2.2007

Репутация: нет
Всего: нет



Уважаемые, а вообще, решабельна ли эта задача? И если да - то как? Просто меня она тоже заинтересовала smile 

PM MAIL   Вверх
_hunter
Дата 25.7.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а что мешает поправить эту константу в уже скомпилированном файле?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
dsnake
Дата 25.7.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.6.2007
Где: Красноярск

Репутация: нет
Всего: нет



Цитата

а что мешает поправить эту константу в уже скомпилированном файле?


Эта задача для меня непростая... Насколько я знаю, если просто тупо побайтно сравнить две откомпилированные версии программы с разными константами и тупо заменить то, что не совпадет на ЧТО-НИБУДЬ, то ничего не получится. smile

Знаешь какой-то особенный способ гуру для замены констант? smile Софтайс не предлагать, с асмом у меня не очень... этот вариант я приберегу напоследок.  
PM MAIL WWW   Вверх
dumb
Дата 25.7.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



я так понял, речь идет о некоем серийном номере, который должен быть уникальный для каждого скачавшего? внутри уже созданного пакета что-либо изменить врядли получится, поэтому нужно чем-то(например, тем же php) изменять глобальную переменную(а не константу!) в .exe и потом создавать пакет(х3, чем это можно под бсд сделать).

чтобы проще было эту переменную найти, можно сделать, например, так:

Код

const
  uid_sign1: array[1..8] of byte = ($11,$22,$33,$44,$55,$66,$77,$88);
  uid: Dword = $12345678;
  uid_sign2: array[1..8] of byte = ($88,$77,$66,$55,$44,$33,$22,$11);


и не забудь где-нибудь в коде сделать обращение к этим константам, чтобы они не отбросились компилером:
Код

procedure someproc;
  somevar: Integer;
begin
  somevar := uid_sign1[1];
  somevar := uid;
  somevar := uid_sign2[1];
...

PM MAIL   Вверх
dsnake
Дата 25.7.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.6.2007
Где: Красноярск

Репутация: нет
Всего: нет



Цитата

чтобы проще было эту переменную найти, можно сделать, например, так:


Спасибо за совет!

На сервере просто открываем exe файл при помощи php, ищем строку, обрамленную нашеми сигнами и заменяем ее на нужное значение такой же размерности? Это будет работать?

Сегодня же протестирую этот метод. smile
PM MAIL WWW   Вверх
_hunter
Дата 25.7.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Цитата(dsnake @  25.7.2007,  13:41 Найти цитируемый пост)
 Насколько я знаю, если просто тупо побайтно сравнить две откомпилированные версии программы с разными константами и тупо заменить то, что не совпадет на ЧТО-НИБУДЬ, то ничего не получится. smile

Откуда инфа? если приложение ничем от такой замены не защищается -- спокойно можно менять. асм тут не особо нужен -- любой способ записи в файл покатит...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
dsnake
Дата 25.7.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.6.2007
Где: Красноярск

Репутация: нет
Всего: нет



Цитата

Откуда инфа?


Хмм... smile Ну я предположил, что это слишком брутальный вариант для изменения exe, к тому же мне уже в одной из веток посоветовали объявлять не константу, а глобальную переменную. Только в этом случае ее будет реально найти и заменить...

Хотя я еще не один из вариантов не проверял.  smile 

Проверю - отпишусь.
PM MAIL WWW   Вверх
bems
Дата 25.7.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



юзер будет просто качать екзешник? или это еще и зазиповано?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
aktuba
Дата 25.7.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

посоветовали объявлять не константу, а глобальную переменную


Правильный совет, т.к. константа после компиляции исчезнет, а вместо нее везде, где она используется, будет подставлено значение константы. В случае использования глобальной переменной все будет нормально. Надо будет только точно находить место инициализации этой переменной. Скорее всего в приведенном примере именно так и делается. Так как приложение скомпилированно, заранее известно место инициализации глобальной переменной, значение которой можно поменять уже с помощью php-кода.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
dsnake
Дата 25.7.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 13.6.2007
Где: Красноярск

Репутация: нет
Всего: нет



Цитата
юзер будет просто качать екзешник? или это еще и зазиповано?

Ну почти. Только не зазиповано, а создан инсталляционный пакет.  smile 

Буду юзать это:
Код

uid_sign1: array[1..8] of byte = ($11,$22,$33,$44,$55,$66,$77,$88);
uid: Dword = $12345678;
uid_sign2: array[1..8] of byte = ($88,$77,$66,$55,$44,$33,$22,$11);

См. пример выше.

Цитата

Правильный совет, т.к. константа после компиляции исчезнет

Сколько я узнал нового в этой ветке. Спасибо.
PM MAIL WWW   Вверх
aktuba
Дата 26.7.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Только не зазиповано, а создан инсталляционный пакет.


Тогда у тебя могут возникнуть ОГРОМНЫЕ проблемы, т.к. любая программа, создающая инсталяшку, сжимает все файлы и, соответственно, найти нужное место практически нереально...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
bems
Дата 26.7.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



вообще-то до тех пор пока у тебя не появиться большое количество закачек (а ты ожидаешь сразу лавину желающих?) можно обойтись некоторым количеством сгенеренных заранее под виндой инсталях и выдавать их по очереди. Это разумеется не абсолютное решение проблемы, но как временная мера...

Добавлено через 32 секунды
а чем создается пакет?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1247 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.