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

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

Адреса функций в памяти


Страницы:   1 2 3 4 5

FearG0 ©   (2007-09-27 04:53:00) 

Интересует вот какой момент:

Допустим есть процедура:

procedure TForm1.Button1Click(Sender: TObject);
begin
 SubProc1;
 beep;
 ShowMessage('Период использования программы истёк!');
 SubProc2;
end;


Если я возьму адреса @SubProc1 и @SubProc2 то в памяти между ними будет находится код
 
beep;
ShowMessage('Период использования программы истёк!');

?


Leonid Troyanovsky   (2007-10-03 17:44:00) [1]


> vpbar ©   (03.10.07 16:43) [85]

> А любая защита - это извращение.

Воистину так.

Один умный человек как-то заметил, что
программисты продают не байты, а услуги.

--
Regards, LVT.


vpbar   (2007-10-03 16:43:00) [2]

>>TStas ©   (03.10.07 16:25) [84]
Все возможно. А любая защита - это извращение.


TStas   (2007-10-03 16:25:00) [3]

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


TStas   (2007-10-02 22:06:00) [4]

А зачем?


Riply   (2007-10-02 01:49:00) [5]

А можно так ?
type
TMyProcType = packed record
 Sign: TGUID;
 MyProc: procedure(Param: DWord);
end;

procedure MyProcReal(Param: DWord);
begin
end;

const
MyProcType: TMyProcType = (...);

А дальше нам остается только найти MyProcType.Sign.
?


TStas   (2007-10-01 21:16:00) [6]

Ой, это до меня посоветовали:)


TStas   (2007-10-01 21:15:00) [7]

А почему тогда нельзя dllю на сервер положить и грузить её явно и без заморочек?


Dmitry S   (2007-09-30 18:05:00) [8]

А почему нельзя загрузить недостающее в виде dll?


FearG0   (2007-09-29 20:09:00) [9]

Обязательно как только релиз будет.


vpbar   (2007-09-29 19:44:00) [10]

успехов. CrackMe сделай :)


FearG0   (2007-09-29 19:36:00) [11]

Всем спасибо за информацию, вроде разобрался что к чему. Понял тему, знаю куда копать и что усовершенствовывать.


vpbar   (2007-09-29 18:44:00) [12]

>>oxffff ©   (29.09.07 18:22) [74]
Хм. Спасибо, действительно интересно. Чтото мне инфа в руки идет, я как раз хочу компилятор для своего языка писать (уже года два хочу :) да все некогда), а тут то один пример, до другой.


oxffff   (2007-09-29 18:22:00) [13]

to vpbar.

Загляни сюда. Это полезней. :)

http://excastle.com/blog/archive/2007/09/28/49839.aspx


oxffff   (2007-09-29 18:20:00) [14]


> vpbar ©   (29.09.07 18:18) [72]
> Ни в чем см [70], почти, только в том что для получения
> кода надо пару лишних телодвижений.


И я о том же. Cмотри последние два знака [71], а именно :)


vpbar   (2007-09-29 18:18:00) [15]

Ни в чем см [70], почти, только в том что для получения кода надо пару лишних телодвижений.


oxffff   (2007-09-29 18:13:00) [16]


> vpbar ©   (29.09.07 17:46) [69]
> >>oxffff ©   (27.09.07 22:59) [62]
> Истину глаголишь, но я имел ввиду следующее. Копируем машинный-
> код процедуры (например,на сервер  как в сабже). Затираем
> процедуру (например, $C3C3C3C3C3C3C3C3.... :) )
> И ели  записывам эту же процедуру (с сервера) назад на то
> же место, то работать оно будет.


А в чем тогда состоит защита? :)


vpbar   (2007-09-29 17:50:00) [17]

FearG0 ©   (27.09.07 15:59) [11]
Защита от взлома.
Дело не в том чтобы ввести в заблуждение.
У меня есть пару процедур которые производят расчеты, без которых смысл программы теряется.
Скомпилированный код я вытащу и сохраню, а в программе затру.
Далее при прохождении кода, программа будет обращаться на сервер, передавать информацию о ключе активации программы и о железе, на сервере сервис будет смотреть на сколько это достоверно, и если все ок отправлять код процедуры в зашифрованном виде программе. Программа расшифрует, перепрошьет свою память и выполнит некогда затертый участок.

А вообще если не заморачиваться, то ломается это просто.
После того как прога расшифрует и перепрошьет делаем дамп и весь код у нас на руках. Далее прошиваем программу сами этим котом. Ломаем проверки целостности, если они есть и готово. Скрещиваем пальцы и надеемся что ничего кроме не изменилось.


vpbar   (2007-09-29 17:46:00) [18]

>>oxffff ©   (27.09.07 22:59) [62]
Истину глаголишь, но я имел ввиду следующее. Копируем машинный-код процедуры (например,на сервер  как в сабже). Затираем процедуру (например, $C3C3C3C3C3C3C3C3.... :) )
И ели  записывам эту же процедуру (с сервера) назад на то же место, то работать оно будет.


vpbar   (2007-09-29 17:42:00) [19]

>>FearG0 ©   (28.09.07 03:41) [65]
Ну, во-первых, в этом случае метка почти всегда будет не в начале процедуры, ибо в начале стек готовится. Пройдись в отладчике увидишь.
Во вторых, если изменить исходник и перекопилировать прогу, то бинарный файл тоже изменится и если адрес процедуры не изменится, то я посчитал бы это вызением.


FearG0   (2007-09-28 16:02:00) [20]

Можно поподробнее, какая процедура должна быть чтобы искомое утверждение было верно?


Страницы:   1 2 3 4 5

Наверх

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