![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Anakin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 25.9.2006 Репутация: нет Всего: нет |
Добрый вечер.
Есть нестандартный по моему мнению вопрос. Все мы читали про защиту программы такого рода, когда часть исполняемого кода хранитса на USB носителе, и при попытке запуска программы без USB ключа программа напрочь отказывается запускатса. Так вот меня интересует вопрос реально ли сделать что-то подобное только что бы хранить информацию не на USB носителе ввиде ключа а скажем на Веб сервере в базе данных или в текстовом фаиле на сервере. Не обязательно большой кусок программы а какуюто процедуру или функцию без которой программа не будет работать или все кнопки будут заблокированы. Если честно я даже не представляю себе как это реализовать, если это возможно подскажите в каком направлении копать или что почитать. |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Имхо, сделать "что-то подобное" реально, но трудно. А использование таким образом защищённой программы для конечного пользователя скорее всего будет настолько связано с геморроем, что никто не захочет её использовать. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Чучмек |
|
||||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Не так страшен черт, как его малюнки. Правда без ручной работы не обойтись. В первую очередь - формат PE файлов и ассемблер. Допустим у программы есть сверхсекретная функция
Код этой функции и нужно вынести из программы, а его место забить всякой дрянью, например нулями. Для простоты код функции будем держать на диске в файле code.bin Код программы:
Теперь нам нужен сам код функции ставим останов на строку s:=add(a,b); ![]() нажимаем F9->Button1->Ctrl+Alt+C ![]() Строка где вызывается add обведена (вызов функции/процедуры всегда call) Нажимаем F7, пока не перейдем на функцию add ![]() Конец функции всегда ret Код функции 03D08BC2C3 размер - 5 байт адрес $00450200 Теперь нужно найти этот код в exe, записать его в code.bin, а его место заполнить нулями. Как найти код по адресу? - смотри формат PE файлов. Для простоты воспользуемся hex редактором ![]() У смещения кода в exe - $4F600 и адреса $00450200 общий только младший байт $00 ![]() Вот файлы проекта, пропатченый exe переименован в ~Project1.exe Это сообщение отредактировал(а) Чучмек - 26.2.2012, 16:41 Присоединённый файл ( Кол-во скачиваний: 3 )
del.zip 202,96 Kb-------------------- умную мысль держи при себе, а дурной - поделись с другими |
||||
|
|||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Ну так автор сказал "Все мы читали про защиту программы такого рода, когда часть исполняемого кода хранитса на USB носителе" Но он хочет "на Веб сервере в базе данных или в текстовом фаиле на сервере." Поймите разницу! -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 14 Всего: 41 |
Хранится может где угодно, хоть на перфокартах.
Кто мешает при запуске подключится к серверу и запросить код? Правда полученный однажды код можно подсунуть программе тем или иным способом. Это сообщение отредактировал(а) Чучмек - 27.2.2012, 10:55 -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| Anakin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 25.9.2006 Репутация: нет Всего: нет |
Да и то верно, в принципе сломать можно всё, но любителей такой тип защиты отпугнет и введёт в заблуждение если накидать в программу ещё кучу функций пустышек и также на сервере хранить пустышки. В любом случае пасиб тебе большое шас буду ковырять и втыкать. |
|||
|
||||
| RomanEEP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 5 Всего: 8 |
Зачем хранить на веб-сервере код, а потом его качать оттуда используя кучу грязных хаков? Можно поступить проще и эффективнее - хранить на веб сервере сверхсеретную функцию в виде скрипта и запрашивать от сервера результат выполнения этой функции. Такую защиту сломать будет в принципе невозможно, если у злоумышленника нет доступак веб-серверу, а функция достаточно сложная.
|
|||
|
||||
| Anakin |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 25.9.2006 Репутация: нет Всего: нет |
Хм а вот это уже интересней.. Что ты имеешь ввиду " сверхсекретную функцию в виде скрипта " |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |