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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как загрузить форму из памяти, например, из TStream? 3ащита программы.. 
:(
    Опции темы
Monty
  Дата 24.10.2003, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



На это меня натолкнула одна статья по защите программ http://www.delphikingdom.com/mastering/safe/add.htm

О защите: я пытался затирать адреса из готовой программы .... тем самым программа умирала .... и переименовывать тоже нельзя! .... Единственно что я добился, это то что DeDe (Дельфи Декомпилер), не может "разковырять" программу из памяти smile.gif ....... а тут хорошая идея wink.gif ..... с шифровкой проблем нет, фантазия богата, но вот как загрузить расшифрованную форму? Вот это задача smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
<Spawn>
Дата 25.10.2003, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


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

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



Monty А если сохранить расшифрованый exe где нить в директории винды и оттуда запустить? Конечно это можно обнаружить, но я думаю вряд ли тебе удасться написать загрузчик для твоей задачи.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Monty
Дата 25.10.2003, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



Да нет, мне всего лишь надо запустить форму из DFM ...... я знаю что так можно smile.gif .... а ты понял что я хочу все зашифровать tounge.gif
Шифруются _только_ формы и их надо загружать самому (как-то), но уже расшифрованые! wink.gif

Есть ли в природе функция похожия на CreateFormFromStream ? smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Dmitry V.Abramov
Дата 25.10.2003, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.9.2003
Где: Saint-Petersburg

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



Monty DFM - это результат сохранения TForm. TForm - наследник TComponent. TComponent умел сохраняться и восстанавливаться в поток еще в Delphi1.
Код
 TStream = class(TObject)
...
   function ReadComponent(Instance: TComponent): TComponent;
   function ReadComponentRes(Instance: TComponent): TComponent;
   procedure WriteComponent(Instance: TComponent);
   procedure WriteComponentRes(const ResName: string; Instance: TComponent);
   procedure WriteDescendent(Instance, Ancestor: TComponent); virtual;
   procedure WriteDescendentRes(const ResName: string; Instance, Ancestor: TComponent);
...
 end;


Примеры есть в самом TForm.pas или в Classes.pas в классах TWriter/TReader.
--------------------
/DVA
PM MAIL WWW   Вверх
Monty
Дата 25.10.2003, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



Dmitry V.Abramov тогда я могу обойтись этими функциями? т.е. этой ReadComponentRes


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Monty
Дата 25.10.2003, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



Не выходит ..... можно скромный пример? smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Dmitry V.Abramov
Дата 25.10.2003, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.9.2003
Где: Saint-Petersburg

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



Monty Так ведь привел бы свой "не выходимый"... - стало бы понятно, куда у тебя мысли думают. И писать, опять же, меньше бы пришлось...
--------------------
/DVA
PM MAIL WWW   Вверх
Monty
Дата 25.10.2003, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



Dmitry V.Abramov
Код
.......
FS := TFileStream.Create('c:\test.dfm', fmOpenRead);
FS.ReadComponent(Form2);
.........

Как то так smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Monty
Дата 25.10.2003, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



Ааа ...... точно! Не правильно! smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Dmitry V.Abramov
Дата 26.10.2003, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.9.2003
Где: Saint-Petersburg

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



Monty Правильно что неправильно smile.gif Для DFM надо ReadComponentRes().
--------------------
/DVA
PM MAIL WWW   Вверх
Monty
Дата 26.10.2003, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



Dmitry V.Abramov Проблема была в том что у новых версий дельфей новый формат DFM, а для ReadComponentRes() нужен старый smile.gif ......... и вот так работает:
Код
 FS := TFileStream.Create('d:\Unit2.dfm', fmCreate);
 FS.WriteComponent(Form2);
 FS.Free;
 FS := TFileStream.Create('d:\Unit2.dfm', fmOpenRead);
 FS.ReadComponent(Form2); /// ReadComponentRes вызывает ошибку :-|
 FS.Free;


Это сообщение отредактировал(а) Monty - 26.10.2003, 18:13


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Monty
Дата 26.10.2003, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



А такой вопрос smile.gif .... Когда происходит чтении DFM файла? А то я думаю если прочтется зашифрованый DFM то вызовет ошибку smile.gif ..... случайно не в момент создании формы Application.CreateForm(TForm1, Form1) ? :-\ ......


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Monty
  Дата 26.10.2003, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



Цитата(Monty @ 26.10.2003, 17:11)
Dmitry V.Abramov Проблема была в том что у новых версий дельфей новый формат DFM, а для ReadComponentRes() нужен старый smile.gif ......... и вот так работает:
Код
 FS := TFileStream.Create('d:\Unit2.dfm', fmCreate);
 FS.WriteComponent(Form2);
 FS.Free;
 FS := TFileStream.Create('d:\Unit2.dfm', fmOpenRead);
 FS.ReadComponent(Form2); /// ReadComponentRes вызывает ошибку :-|
 FS.Free;

Я опять ошибся smile.gif ...... вот так надо:
Код
 FS := TFileStream.Create('d:\Unit2.dfm', fmCreate);
 FS.WriteComponentRes('TForm2', Form2);
//  FS.WriteComponent(Form2);
 FS.Free;
//  Exit;
 FS := TFileStream.Create('d:\Unit2.dfm', fmOpenRead);
 FS.ReadComponentRes(Form2);
 FS.Free;

smile.gif


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Dmitry V.Abramov
Дата 26.10.2003, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.9.2003
Где: Saint-Petersburg

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



Monty Да. В CreateForm. Там же видно, что конкретно загрузкой из ресурса заведует InternalReadComponentRes. Зашифрованные dfm'ы он не загрузит. А зачем? Пусть грузит обычные, но НЕ ТЕ, что ты будешь использовать в дальнейшем. Ты же, прежде чем начать работу, прибьешь изначально груженные формы и переоткроешь на их месте свои (зашифрованные). На 80% нынешних мега-кул-ксацкепов этого должно хватить.
--------------------
/DVA
PM MAIL WWW   Вверх
Monty
Дата 26.10.2003, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


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

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



Dmitry V.Abramov понятно smile.gif ..... вот столкнулся еще с проблемой sad.gif ......
Код
 FS := TFileStream.Create('Unit2a.dfm', fmOpenRead);
 FS.ReadComponentRes(Form2);
 FS.Free;

Unit2a.dfm это форма с Edit'om ...... если на Form2 нет этого компонента, то программа ругается что "Class TEdit not found" ....... как это можно решить? Так как я хочу в _пустую_ форму загрузить зашифрованую с кучей компонентов smile.gif

Многие кулхацкеры так и ломают, грузят ДеДе смотрят адрес Кнопки REGISTER и меняют джамп smile.gif)
Интересно будет увидеть лицо того кто в ДеДе не увидет ни одной формы biggrin.gif .....примитивную CRC уже давно сделал .... думаю поставить вторую НЕ явно ;)


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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