![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Адреса функций в памяти
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]Можно поподробнее, какая процедура должна быть чтобы искомое утверждение было верно?